<meta name="generator" content="codedoc v3.7">
<meta name="author" content="Michael R Sweet">
<meta name="language" content="en-US">
-<meta name="copyright" content="Copyright © 2020-2024 OpenPrinting. All Rights Reserved.">
+<meta name="copyright" content="Copyright © 2020-2024 by OpenPrinting. All Rights Reserved.">
<meta name="version" content="2.5.0">
<style type="text/css"><!--
body {
padding: 10px;
page-break-inside: avoid;
}
+blockquote :first-child {
+ margin-top: 0;
+}
+blockquote :first-child {
+ margin-bottom: 0;
+}
p code, li code, p.code, pre, ul.code li {
font-family: monospace;
hyphens: manual;
color: darkgreen;
}
span.directive {
- color: purple;
+ color: red;
}
span.number {
color: brown;
}
span.reserved {
- color: darkcyan;
+ color: blue;
}
span.string {
color: magenta;
<li><a href="#cupsCopyDest">cupsCopyDest</a></li>
<li><a href="#cupsCopyDestConflicts">cupsCopyDestConflicts</a></li>
<li><a href="#cupsCopyDestInfo">cupsCopyDestInfo</a></li>
+<li><a href="#cupsCopyDestInfo2">cupsCopyDestInfo2</a></li>
<li><a href="#cupsCopyString">cupsCopyString</a></li>
<li><a href="#cupsCreateCredentials">cupsCreateCredentials</a></li>
<li><a href="#cupsCreateCredentialsRequest">cupsCreateCredentialsRequest</a></li>
<li><a href="#cupsDNSSDBrowseDelete">cupsDNSSDBrowseDelete</a></li>
<li><a href="#cupsDNSSDBrowseGetContext">cupsDNSSDBrowseGetContext</a></li>
<li><a href="#cupsDNSSDBrowseNew">cupsDNSSDBrowseNew</a></li>
+<li><a href="#cupsDNSSDCopyComputerName">cupsDNSSDCopyComputerName</a></li>
<li><a href="#cupsDNSSDCopyHostName">cupsDNSSDCopyHostName</a></li>
<li><a href="#cupsDNSSDDecodeTXT">cupsDNSSDDecodeTXT</a></li>
<li><a href="#cupsDNSSDDelete">cupsDNSSDDelete</a></li>
<li><a href="#cupsFinishDestDocument">cupsFinishDestDocument</a></li>
<li><a href="#cupsFormDecode">cupsFormDecode</a></li>
<li><a href="#cupsFormEncode">cupsFormEncode</a></li>
+<li><a href="#cupsFormatString">cupsFormatString</a></li>
+<li><a href="#cupsFormatStringv">cupsFormatStringv</a></li>
<li><a href="#cupsFreeDestInfo">cupsFreeDestInfo</a></li>
<li><a href="#cupsFreeDests">cupsFreeDests</a></li>
<li><a href="#cupsFreeJobs">cupsFreeJobs</a></li>
<li><a href="#cupsFreeOptions">cupsFreeOptions</a></li>
+<li><a href="#cupsGetClock">cupsGetClock</a></li>
<li><a href="#cupsGetCredentialsExpiration">cupsGetCredentialsExpiration</a></li>
<li><a href="#cupsGetCredentialsInfo">cupsGetCredentialsInfo</a></li>
<li><a href="#cupsGetCredentialsTrust">cupsGetCredentialsTrust</a></li>
<li><a href="#cupsHMACData">cupsHMACData</a></li>
<li><a href="#cupsHashData">cupsHashData</a></li>
<li><a href="#cupsHashString">cupsHashString</a></li>
+<li><a href="#cupsJSONAdd">cupsJSONAdd</a></li>
<li><a href="#cupsJSONDelete">cupsJSONDelete</a></li>
<li><a href="#cupsJSONExportFile">cupsJSONExportFile</a></li>
<li><a href="#cupsJSONExportString">cupsJSONExportString</a></li>
<li><a href="#cupsLastError">cupsLastError</a></li>
<li><a href="#cupsLastErrorString">cupsLastErrorString</a></li>
<li><a href="#cupsLocalizeDestMedia">cupsLocalizeDestMedia</a></li>
+<li><a href="#cupsLocalizeDestMedia2">cupsLocalizeDestMedia2</a></li>
<li><a href="#cupsLocalizeDestOption">cupsLocalizeDestOption</a></li>
<li><a href="#cupsLocalizeDestValue">cupsLocalizeDestValue</a></li>
<li><a href="#cupsMutexDestroy">cupsMutexDestroy</a></li>
<li><a href="#cupsMutexUnlock">cupsMutexUnlock</a></li>
<li><a href="#cupsNotifySubject">cupsNotifySubject</a></li>
<li><a href="#cupsNotifyText">cupsNotifyText</a></li>
+<li><a href="#cupsOAuthClearTokens">cupsOAuthClearTokens</a></li>
+<li><a href="#cupsOAuthCopyAccessToken">cupsOAuthCopyAccessToken</a></li>
+<li><a href="#cupsOAuthCopyClientId">cupsOAuthCopyClientId</a></li>
+<li><a href="#cupsOAuthCopyRefreshToken">cupsOAuthCopyRefreshToken</a></li>
+<li><a href="#cupsOAuthCopyUserId">cupsOAuthCopyUserId</a></li>
+<li><a href="#cupsOAuthGetAuthorizationCode">cupsOAuthGetAuthorizationCode</a></li>
+<li><a href="#cupsOAuthGetClientId">cupsOAuthGetClientId</a></li>
+<li><a href="#cupsOAuthGetMetadata">cupsOAuthGetMetadata</a></li>
+<li><a href="#cupsOAuthGetTokens">cupsOAuthGetTokens</a></li>
+<li><a href="#cupsOAuthMakeAuthorizationURL">cupsOAuthMakeAuthorizationURL</a></li>
+<li><a href="#cupsOAuthMakeBase64Random">cupsOAuthMakeBase64Random</a></li>
+<li><a href="#cupsOAuthSaveClientData">cupsOAuthSaveClientData</a></li>
+<li><a href="#cupsOAuthSaveTokens">cupsOAuthSaveTokens</a></li>
<li><a href="#cupsParseOptions">cupsParseOptions</a></li>
+<li><a href="#cupsParseOptions2">cupsParseOptions2</a></li>
<li><a href="#cupsPutFd">cupsPutFd</a></li>
<li><a href="#cupsPutFile">cupsPutFile</a></li>
<li><a href="#cupsRWDestroy">cupsRWDestroy</a></li>
<li><a href="#cupsSendRequest">cupsSendRequest</a></li>
<li><a href="#cupsServer">cupsServer</a></li>
<li><a href="#cupsSetClientCertCB">cupsSetClientCertCB</a></li>
+<li><a href="#cupsSetClientCredentials">cupsSetClientCredentials</a></li>
<li><a href="#cupsSetCredentials">cupsSetCredentials</a></li>
<li><a href="#cupsSetDefaultDest">cupsSetDefaultDest</a></li>
<li><a href="#cupsSetDests2">cupsSetDests2</a></li>
<li><a href="#httpClearFields">httpClearFields</a></li>
<li><a href="#httpClose">httpClose</a></li>
<li><a href="#httpConnect2">httpConnect2</a></li>
+<li><a href="#httpConnectAgain">httpConnectAgain</a></li>
+<li><a href="#httpConnectURI">httpConnectURI</a></li>
<li><a href="#httpCopyPeerCredentials">httpCopyPeerCredentials</a></li>
<li><a href="#httpDecode64_3">httpDecode64_3</a></li>
<li><a href="#httpEncode64_3">httpEncode64_3</a></li>
<li><a href="#httpPeek">httpPeek</a></li>
<li><a href="#httpRead2">httpRead2</a></li>
<li><a href="#httpReadRequest">httpReadRequest</a></li>
-<li><a href="#httpReconnect2">httpReconnect2</a></li>
<li><a href="#httpResolveHostname">httpResolveHostname</a></li>
<li><a href="#httpResolveURI">httpResolveURI</a></li>
<li><a href="#httpSeparateURI">httpSeparateURI</a></li>
<li><a href="#cups_media_t">cups_media_t</a></li>
<li><a href="#cups_mutex_t">cups_mutex_t</a></li>
<li><a href="#cups_oauth_cb_t">cups_oauth_cb_t</a></li>
+<li><a href="#cups_ogrant_t">cups_ogrant_t</a></li>
<li><a href="#cups_option_t">cups_option_t</a></li>
<li><a href="#cups_order_t">cups_order_t</a></li>
<li><a href="#cups_orient_t">cups_orient_t</a></li>
<li><a href="#cups_jwa_e">cups_jwa_e</a></li>
<li><a href="#cups_jws_format_e">cups_jws_format_e</a></li>
<li><a href="#cups_media_flags_e">cups_media_flags_e</a></li>
+<li><a href="#cups_ogrant_e">cups_ogrant_e</a></li>
<li><a href="#cups_order_e">cups_order_e</a></li>
<li><a href="#cups_orient_e">cups_orient_e</a></li>
<li><a href="#cups_ptype_e">cups_ptype_e</a></li>
<h3 class="function"><a id="cupsAddDest">cupsAddDest</a></h3>
<p class="description">Add a destination to the list of destinations.</p>
<p class="code">
-int cupsAddDest(const char *name, const char *instance, int num_dests, <a href="#cups_dest_t">cups_dest_t</a> **dests);</p>
+<span class="reserved">int</span> cupsAddDest(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *instance, <span class="reserved">int</span> num_dests, <a href="#cups_dest_t">cups_dest_t</a> **dests);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>name</th>
<h3 class="function"><span class="info"> CUPS 2.3/macOS 10.14 </span><a id="cupsAddDestMediaOptions">cupsAddDestMediaOptions</a></h3>
<p class="description">Add the option corresponding to the specified media size.</p>
<p class="code">
-int cupsAddDestMediaOptions(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, unsigned flags, <a href="#cups_size_t">cups_size_t</a> *size, int num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
+<span class="reserved">int</span> cupsAddDestMediaOptions(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">unsigned</span> flags, <a href="#cups_size_t">cups_size_t</a> *size, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsAddDestMediaOptions2">cupsAddDestMediaOptions2</a></h3>
<p class="description">Add the options corresponding to the specified media information.</p>
<p class="code">
-int cupsAddDestMediaOptions2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, unsigned flags, <a href="#cups_media_t">cups_media_t</a> *media, int num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
+<span class="reserved">int</span> cupsAddDestMediaOptions2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">unsigned</span> flags, <a href="#cups_media_t">cups_media_t</a> *media, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.2.4/macOS 10.13 </span><a id="cupsAddIntegerOption">cupsAddIntegerOption</a></h3>
<p class="description">Add an integer option to an option array.</p>
<p class="code">
-int cupsAddIntegerOption(const char *name, int value, int num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
+<span class="reserved">int</span> cupsAddIntegerOption(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> value, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>name</th>
<h3 class="function"><a id="cupsAddOption">cupsAddOption</a></h3>
<p class="description">Add an option to an option array.</p>
<p class="code">
-int cupsAddOption(const char *name, const char *value, int num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
+<span class="reserved">int</span> cupsAddOption(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *value, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>name</th>
<p class="description">Return whether the credentials are valid
for the given name.</p>
<p class="code">
-bool cupsAreCredentialsValidForName(const char *common_name, const char *credentials);</p>
+<span class="reserved">bool</span> cupsAreCredentialsValidForName(<span class="reserved">const</span> <span class="reserved">char</span> *common_name, <span class="reserved">const</span> <span class="reserved">char</span> *credentials);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>common_name</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsArrayAdd">cupsArrayAdd</a></h3>
<p class="description">Add an element to the array.</p>
<p class="code">
-int cupsArrayAdd(<a href="#cups_array_t">cups_array_t</a> *a, void *e);</p>
+<span class="reserved">int</span> cupsArrayAdd(<a href="#cups_array_t">cups_array_t</a> *a, <span class="reserved">void</span> *e);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsArrayAddStrings">cupsArrayAddStrings</a></h3>
<p class="description">Add zero or more delimited strings to an array.</p>
<p class="code">
-bool cupsArrayAddStrings(<a href="#cups_array_t">cups_array_t</a> *a, const char *s, char delim);</p>
+<span class="reserved">bool</span> cupsArrayAddStrings(<a href="#cups_array_t">cups_array_t</a> *a, <span class="reserved">const</span> <span class="reserved">char</span> *s, <span class="reserved">char</span> delim);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsArrayClear">cupsArrayClear</a></h3>
<p class="description">Clear the array.</p>
<p class="code">
-void cupsArrayClear(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> cupsArrayClear(<a href="#cups_array_t">cups_array_t</a> *a);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsArrayDelete">cupsArrayDelete</a></h3>
<p class="description">Free all memory used by the array.</p>
<p class="code">
-void cupsArrayDelete(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> cupsArrayDelete(<a href="#cups_array_t">cups_array_t</a> *a);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsArrayFind">cupsArrayFind</a></h3>
<p class="description">Find an element in the array.</p>
<p class="code">
-void *cupsArrayFind(<a href="#cups_array_t">cups_array_t</a> *a, void *e);</p>
+<span class="reserved">void</span> *cupsArrayFind(<a href="#cups_array_t">cups_array_t</a> *a, <span class="reserved">void</span> *e);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsArrayGetCount">cupsArrayGetCount</a></h3>
<p class="description">Get the number of elements in the array.</p>
<p class="code">
-int cupsArrayGetCount(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">int</span> cupsArrayGetCount(<a href="#cups_array_t">cups_array_t</a> *a);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsArrayGetCurrent">cupsArrayGetCurrent</a></h3>
<p class="description">Return the current element in the array.</p>
<p class="code">
-void *cupsArrayGetCurrent(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> *cupsArrayGetCurrent(<a href="#cups_array_t">cups_array_t</a> *a);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsArrayGetElement">cupsArrayGetElement</a></h3>
<p class="description">Get the N-th element in the array.</p>
<p class="code">
-void *cupsArrayGetElement(<a href="#cups_array_t">cups_array_t</a> *a, int n);</p>
+<span class="reserved">void</span> *cupsArrayGetElement(<a href="#cups_array_t">cups_array_t</a> *a, <span class="reserved">int</span> n);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsArrayGetFirst">cupsArrayGetFirst</a></h3>
<p class="description">Get the first element in the array.</p>
<p class="code">
-void *cupsArrayGetFirst(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> *cupsArrayGetFirst(<a href="#cups_array_t">cups_array_t</a> *a);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 1.3/macOS 10.5 </span><a id="cupsArrayGetIndex">cupsArrayGetIndex</a></h3>
<p class="description">Get the index of the current element.</p>
<p class="code">
-int cupsArrayGetIndex(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">int</span> cupsArrayGetIndex(<a href="#cups_array_t">cups_array_t</a> *a);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 1.3/macOS 10.5 </span><a id="cupsArrayGetInsert">cupsArrayGetInsert</a></h3>
<p class="description">Get the index of the last inserted element.</p>
<p class="code">
-int cupsArrayGetInsert(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">int</span> cupsArrayGetInsert(<a href="#cups_array_t">cups_array_t</a> *a);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsArrayGetLast">cupsArrayGetLast</a></h3>
<p class="description">Get the last element in the array.</p>
<p class="code">
-void *cupsArrayGetLast(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> *cupsArrayGetLast(<a href="#cups_array_t">cups_array_t</a> *a);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsArrayGetNext">cupsArrayGetNext</a></h3>
<p class="description">Get the next element in the array.</p>
<p class="code">
-void *cupsArrayGetNext(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> *cupsArrayGetNext(<a href="#cups_array_t">cups_array_t</a> *a);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsArrayGetPrev">cupsArrayGetPrev</a></h3>
<p class="description">Get the previous element in the array.</p>
<p class="code">
-void *cupsArrayGetPrev(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> *cupsArrayGetPrev(<a href="#cups_array_t">cups_array_t</a> *a);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsArrayGetUserData">cupsArrayGetUserData</a></h3>
<p class="description">Return the user data for an array.</p>
<p class="code">
-void *cupsArrayGetUserData(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> *cupsArrayGetUserData(<a href="#cups_array_t">cups_array_t</a> *a);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsArrayInsert">cupsArrayInsert</a></h3>
<p class="description">Insert an element in the array.</p>
<p class="code">
-int cupsArrayInsert(<a href="#cups_array_t">cups_array_t</a> *a, void *e);</p>
+<span class="reserved">int</span> cupsArrayInsert(<a href="#cups_array_t">cups_array_t</a> *a, <span class="reserved">void</span> *e);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 1.5/macOS 10.7 </span><a id="cupsArrayNew3">cupsArrayNew3</a></h3>
<p class="description">Create a new array with optional compare, hash, copy, and/or free callbacks.</p>
<p class="code">
-<a href="#cups_array_t">cups_array_t</a> *cupsArrayNew3(<a href="#cups_array_cb_t">cups_array_cb_t</a> f, void *d, <a href="#cups_ahash_cb_t">cups_ahash_cb_t</a> h, int hsize, <a href="#cups_acopy_cb_t">cups_acopy_cb_t</a> cf, <a href="#cups_afree_cb_t">cups_afree_cb_t</a> ff);</p>
+<a href="#cups_array_t">cups_array_t</a> *cupsArrayNew3(<a href="#cups_array_cb_t">cups_array_cb_t</a> f, <span class="reserved">void</span> *d, <a href="#cups_ahash_cb_t">cups_ahash_cb_t</a> h, <span class="reserved">int</span> hsize, <a href="#cups_acopy_cb_t">cups_acopy_cb_t</a> cf, <a href="#cups_afree_cb_t">cups_afree_cb_t</a> ff);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>f</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsArrayNewStrings">cupsArrayNewStrings</a></h3>
<p class="description">Create a new array of delimited strings.</p>
<p class="code">
-<a href="#cups_array_t">cups_array_t</a> *cupsArrayNewStrings(const char *s, char delim);</p>
+<a href="#cups_array_t">cups_array_t</a> *cupsArrayNewStrings(<span class="reserved">const</span> <span class="reserved">char</span> *s, <span class="reserved">char</span> delim);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>s</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsArrayRemove">cupsArrayRemove</a></h3>
<p class="description">Remove an element from the array.</p>
<p class="code">
-int cupsArrayRemove(<a href="#cups_array_t">cups_array_t</a> *a, void *e);</p>
+<span class="reserved">int</span> cupsArrayRemove(<a href="#cups_array_t">cups_array_t</a> *a, <span class="reserved">void</span> *e);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsArrayRestore">cupsArrayRestore</a></h3>
<p class="description">Reset the current element to the last <a href="#cupsArraySave"><code>cupsArraySave</code></a>.</p>
<p class="code">
-void *cupsArrayRestore(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">void</span> *cupsArrayRestore(<a href="#cups_array_t">cups_array_t</a> *a);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsArraySave">cupsArraySave</a></h3>
<p class="description">Mark the current element for a later <a href="#cupsArrayRestore"><code>cupsArrayRestore</code></a>.</p>
<p class="code">
-int cupsArraySave(<a href="#cups_array_t">cups_array_t</a> *a);</p>
+<span class="reserved">int</span> cupsArraySave(<a href="#cups_array_t">cups_array_t</a> *a);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>a</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="cupsCancelDestJob">cupsCancelDestJob</a></h3>
<p class="description">Cancel a job on a destination.</p>
<p class="code">
-ipp_status_t cupsCancelDestJob(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, int job_id);</p>
+ipp_status_t cupsCancelDestJob(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <span class="reserved">int</span> job_id);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><a id="cupsCharsetToUTF8">cupsCharsetToUTF8</a></h3>
<p class="description">Convert legacy character set to UTF-8.</p>
<p class="code">
-int cupsCharsetToUTF8(<a href="#cups_utf8_t">cups_utf8_t</a> *dest, const char *src, const int maxout, const <a href="#cups_encoding_t">cups_encoding_t</a> encoding);</p>
+<span class="reserved">int</span> cupsCharsetToUTF8(<a href="#cups_utf8_t">cups_utf8_t</a> *dest, <span class="reserved">const</span> <span class="reserved">char</span> *src, <span class="reserved">const</span> <span class="reserved">int</span> maxout, <span class="reserved">const</span> <a href="#cups_encoding_t">cups_encoding_t</a> encoding);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dest</th>
<p class="description">Check that the option and value are supported
by the destination.</p>
<p class="code">
-int cupsCheckDestSupported(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, const char *option, const char *value);</p>
+<span class="reserved">int</span> cupsCheckDestSupported(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">const</span> <span class="reserved">char</span> *option, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="cupsCloseDestJob">cupsCloseDestJob</a></h3>
<p class="description">Close a job and start printing.</p>
<p class="code">
-ipp_status_t cupsCloseDestJob(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *info, int job_id);</p>
+ipp_status_t cupsCloseDestJob(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *info, <span class="reserved">int</span> job_id);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
on success.
</p>
-<h3 class="function"><a id="cupsConcatString">cupsConcatString</a></h3>
-<p class="description">Safely concatenate two strings.</p>
+<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsConcatString">cupsConcatString</a></h3>
+<p class="description">Safely concatenate two UTF-8 strings.</p>
<p class="code">
-size_t cupsConcatString(char *dst, const char *src, size_t dstsize);</p>
+size_t cupsConcatString(<span class="reserved">char</span> *dst, <span class="reserved">const</span> <span class="reserved">char</span> *src, size_t dstsize);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dst</th>
<h3 class="function"><a id="cupsCondBroadcast">cupsCondBroadcast</a></h3>
<p class="description">Wake up waiting threads.</p>
<p class="code">
-void cupsCondBroadcast(<a href="#cups_cond_t">cups_cond_t</a> *cond);</p>
+<span class="reserved">void</span> cupsCondBroadcast(<a href="#cups_cond_t">cups_cond_t</a> *cond);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>cond</th>
<h3 class="function"><a id="cupsCondDestroy">cupsCondDestroy</a></h3>
<p class="description">Destroy a condition variable.</p>
<p class="code">
-void cupsCondDestroy(<a href="#cups_cond_t">cups_cond_t</a> *cond);</p>
+<span class="reserved">void</span> cupsCondDestroy(<a href="#cups_cond_t">cups_cond_t</a> *cond);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>cond</th>
<h3 class="function"><a id="cupsCondInit">cupsCondInit</a></h3>
<p class="description">Initialize a condition variable.</p>
<p class="code">
-void cupsCondInit(<a href="#cups_cond_t">cups_cond_t</a> *cond);</p>
+<span class="reserved">void</span> cupsCondInit(<a href="#cups_cond_t">cups_cond_t</a> *cond);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>cond</th>
<h3 class="function"><a id="cupsCondWait">cupsCondWait</a></h3>
<p class="description">Wait for a condition with optional timeout.</p>
<p class="code">
-void cupsCondWait(<a href="#cups_cond_t">cups_cond_t</a> *cond, <a href="#cups_mutex_t">cups_mutex_t</a> *mutex, double timeout);</p>
+<span class="reserved">void</span> cupsCondWait(<a href="#cups_cond_t">cups_cond_t</a> *cond, <a href="#cups_mutex_t">cups_mutex_t</a> *mutex, <span class="reserved">double</span> timeout);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>cond</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="cupsConnectDest">cupsConnectDest</a></h3>
<p class="description">Open a connection to the destination.</p>
<p class="code">
-<a href="#http_t">http_t</a> *cupsConnectDest(<a href="#cups_dest_t">cups_dest_t</a> *dest, unsigned flags, int msec, int *cancel, char *resource, size_t resourcesize, <a href="#cups_dest_cb_t">cups_dest_cb_t</a> cb, void *user_data);</p>
+<a href="#http_t">http_t</a> *cupsConnectDest(<a href="#cups_dest_t">cups_dest_t</a> *dest, <span class="reserved">unsigned</span> flags, <span class="reserved">int</span> msec, <span class="reserved">int</span> *cancel, <span class="reserved">char</span> *resource, size_t resourcesize, <a href="#cups_dest_cb_t">cups_dest_cb_t</a> cb, <span class="reserved">void</span> *user_data);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dest</th>
<h3 class="function"><a id="cupsCopyCredentials">cupsCopyCredentials</a></h3>
<p class="description"></p>
<p class="code">
-char *cupsCopyCredentials(const char *path, const char *common_name);</p>
+<span class="reserved">char</span> *cupsCopyCredentials(<span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">const</span> <span class="reserved">char</span> *common_name);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>path</th>
<h3 class="function"><a id="cupsCopyCredentialsKey">cupsCopyCredentialsKey</a></h3>
<p class="description"></p>
<p class="code">
-char *cupsCopyCredentialsKey(const char *path, const char *common_name);</p>
+<span class="reserved">char</span> *cupsCopyCredentialsKey(<span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">const</span> <span class="reserved">char</span> *common_name);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>path</th>
<h3 class="function"><a id="cupsCopyCredentialsRequest">cupsCopyCredentialsRequest</a></h3>
<p class="description"></p>
<p class="code">
-char *cupsCopyCredentialsRequest(const char *path, const char *common_name);</p>
+<span class="reserved">char</span> *cupsCopyCredentialsRequest(<span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">const</span> <span class="reserved">char</span> *common_name);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>path</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="cupsCopyDest">cupsCopyDest</a></h3>
<p class="description">Copy a destination.</p>
<p class="code">
-int cupsCopyDest(<a href="#cups_dest_t">cups_dest_t</a> *dest, int num_dests, <a href="#cups_dest_t">cups_dest_t</a> **dests);</p>
+<span class="reserved">int</span> cupsCopyDest(<a href="#cups_dest_t">cups_dest_t</a> *dest, <span class="reserved">int</span> num_dests, <a href="#cups_dest_t">cups_dest_t</a> **dests);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dest</th>
<p class="description">Get conflicts and resolutions for a new
option/value pair.</p>
<p class="code">
-int cupsCopyDestConflicts(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, int num_options, <a href="#cups_option_t">cups_option_t</a> *options, const char *new_option, const char *new_value, int *num_conflicts, <a href="#cups_option_t">cups_option_t</a> **conflicts, int *num_resolved, <a href="#cups_option_t">cups_option_t</a> **resolved);</p>
+<span class="reserved">int</span> cupsCopyDestConflicts(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> *options, <span class="reserved">const</span> <span class="reserved">char</span> *new_option, <span class="reserved">const</span> <span class="reserved">char</span> *new_value, <span class="reserved">int</span> *num_conflicts, <a href="#cups_option_t">cups_option_t</a> **conflicts, <span class="reserved">int</span> *num_resolved, <a href="#cups_option_t">cups_option_t</a> **resolved);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
to 0 and <code>NULL</code>, respectively, then the conflict cannot be resolved.
</p>
-<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="cupsCopyDestInfo">cupsCopyDestInfo</a></h3>
+<h3 class="function"><span class="info"> CUPS 1.6 </span><a id="cupsCopyDestInfo">cupsCopyDestInfo</a></h3>
<p class="description">Get the supported values/capabilities for the
destination.</p>
<p class="code">
value. <code>NULL</code> is returned on error.
</p>
-<h3 class="function"><a id="cupsCopyString">cupsCopyString</a></h3>
-<p class="description">Safely copy two strings.</p>
+<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsCopyDestInfo2">cupsCopyDestInfo2</a></h3>
+<p class="description">Get the supported values/capabilities for the
+ destination.</p>
+<p class="code">
+<a href="#cups_dinfo_t">cups_dinfo_t</a> *cupsCopyDestInfo2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dest_flags_t">cups_dest_flags_t</a> dflags);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>http</th>
+<td class="description">Connection to destination</td></tr>
+<tr><th>dest</th>
+<td class="description">Destination</td></tr>
+<tr><th>dflags</th>
+<td class="description">Destination flags</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Destination information</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">The caller is responsible for calling <a href="#cupsFreeDestInfo"><code>cupsFreeDestInfo</code></a> on the return
+value. <code>NULL</code> is returned on error.
+
+</p>
+<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsCopyString">cupsCopyString</a></h3>
+<p class="description">Safely copy a UTF-8 string.</p>
<p class="code">
-size_t cupsCopyString(char *dst, const char *src, size_t dstsize);</p>
+size_t cupsCopyString(<span class="reserved">char</span> *dst, <span class="reserved">const</span> <span class="reserved">char</span> *src, size_t dstsize);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dst</th>
<h3 class="function"><a id="cupsCreateCredentials">cupsCreateCredentials</a></h3>
<p class="description">Make an X.509 certificate and private key pair.</p>
<p class="code">
-bool cupsCreateCredentials(const char *path, bool ca_cert, <a href="#cups_credpurpose_t">cups_credpurpose_t</a> purpose, <a href="#cups_credtype_t">cups_credtype_t</a> type, <a href="#cups_credusage_t">cups_credusage_t</a> usage, const char *organization, const char *org_unit, const char *locality, const char *state_province, const char *country, const char *common_name, const char *email, size_t num_alt_names, const char *const *alt_names, const char *root_name, time_t expiration_date);</p>
+<span class="reserved">bool</span> cupsCreateCredentials(<span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">bool</span> ca_cert, <a href="#cups_credpurpose_t">cups_credpurpose_t</a> purpose, <a href="#cups_credtype_t">cups_credtype_t</a> type, <a href="#cups_credusage_t">cups_credusage_t</a> usage, <span class="reserved">const</span> <span class="reserved">char</span> *organization, <span class="reserved">const</span> <span class="reserved">char</span> *org_unit, <span class="reserved">const</span> <span class="reserved">char</span> *locality, <span class="reserved">const</span> <span class="reserved">char</span> *state_province, <span class="reserved">const</span> <span class="reserved">char</span> *country, <span class="reserved">const</span> <span class="reserved">char</span> *common_name, <span class="reserved">const</span> <span class="reserved">char</span> *email, size_t num_alt_names, <span class="reserved">const</span> <span class="reserved">char</span> *const *alt_names, <span class="reserved">const</span> <span class="reserved">char</span> *root_name, time_t expiration_date);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>path</th>
<h3 class="function"><a id="cupsCreateCredentialsRequest">cupsCreateCredentialsRequest</a></h3>
<p class="description">Make an X.509 Certificate Signing Request.</p>
<p class="code">
-bool cupsCreateCredentialsRequest(const char *path, <a href="#cups_credpurpose_t">cups_credpurpose_t</a> purpose, <a href="#cups_credtype_t">cups_credtype_t</a> type, <a href="#cups_credusage_t">cups_credusage_t</a> usage, const char *organization, const char *org_unit, const char *locality, const char *state_province, const char *country, const char *common_name, const char *email, size_t num_alt_names, const char *const *alt_names);</p>
+<span class="reserved">bool</span> cupsCreateCredentialsRequest(<span class="reserved">const</span> <span class="reserved">char</span> *path, <a href="#cups_credpurpose_t">cups_credpurpose_t</a> purpose, <a href="#cups_credtype_t">cups_credtype_t</a> type, <a href="#cups_credusage_t">cups_credusage_t</a> usage, <span class="reserved">const</span> <span class="reserved">char</span> *organization, <span class="reserved">const</span> <span class="reserved">char</span> *org_unit, <span class="reserved">const</span> <span class="reserved">char</span> *locality, <span class="reserved">const</span> <span class="reserved">char</span> *state_province, <span class="reserved">const</span> <span class="reserved">char</span> *country, <span class="reserved">const</span> <span class="reserved">char</span> *common_name, <span class="reserved">const</span> <span class="reserved">char</span> *email, size_t num_alt_names, <span class="reserved">const</span> <span class="reserved">char</span> *const *alt_names);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>path</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="cupsCreateDestJob">cupsCreateDestJob</a></h3>
<p class="description">Create a job on a destination.</p>
<p class="code">
-ipp_status_t cupsCreateDestJob(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *info, int *job_id, const char *title, int num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
+ipp_status_t cupsCreateDestJob(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *info, <span class="reserved">int</span> *job_id, <span class="reserved">const</span> <span class="reserved">char</span> *title, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsCreateTempFd">cupsCreateTempFd</a></h3>
<p class="description">Creates a temporary file descriptor.</p>
<p class="code">
-int cupsCreateTempFd(const char *prefix, const char *suffix, char *filename, size_t len);</p>
+<span class="reserved">int</span> cupsCreateTempFd(<span class="reserved">const</span> <span class="reserved">char</span> *prefix, <span class="reserved">const</span> <span class="reserved">char</span> *suffix, <span class="reserved">char</span> *filename, size_t len);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>prefix</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsCreateTempFile">cupsCreateTempFile</a></h3>
<p class="description">Creates a temporary CUPS file.</p>
<p class="code">
-<a href="#cups_file_t">cups_file_t</a> *cupsCreateTempFile(const char *prefix, const char *suffix, char *filename, size_t len);</p>
+<a href="#cups_file_t">cups_file_t</a> *cupsCreateTempFile(<span class="reserved">const</span> <span class="reserved">char</span> *prefix, <span class="reserved">const</span> <span class="reserved">char</span> *suffix, <span class="reserved">char</span> *filename, size_t len);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>prefix</th>
<p class="description">Create a full service name from the instance
name, registration type, and domain.</p>
<p class="code">
-bool cupsDNSSDAssembleFullName(char *fullname, size_t fullsize, const char *name, const char *type, const char *domain);</p>
+<span class="reserved">bool</span> cupsDNSSDAssembleFullName(<span class="reserved">char</span> *fullname, size_t fullsize, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *type, <span class="reserved">const</span> <span class="reserved">char</span> *domain);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fullname</th>
<h3 class="function"><a id="cupsDNSSDBrowseDelete">cupsDNSSDBrowseDelete</a></h3>
<p class="description">Cancel and delete a browse request.</p>
<p class="code">
-void cupsDNSSDBrowseDelete(<a href="#cups_dnssd_browse_t">cups_dnssd_browse_t</a> *browse);</p>
+<span class="reserved">void</span> cupsDNSSDBrowseDelete(<a href="#cups_dnssd_browse_t">cups_dnssd_browse_t</a> *browse);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>browse</th>
<h3 class="function"><a id="cupsDNSSDBrowseNew">cupsDNSSDBrowseNew</a></h3>
<p class="description">Create a new DNS-SD browse request.</p>
<p class="code">
-<a href="#cups_dnssd_browse_t">cups_dnssd_browse_t</a> *cupsDNSSDBrowseNew(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, uint32_t if_index, const char *types, const char *domain, <a href="#cups_dnssd_browse_cb_t">cups_dnssd_browse_cb_t</a> browse_cb, void *cb_data);</p>
+<a href="#cups_dnssd_browse_t">cups_dnssd_browse_t</a> *cupsDNSSDBrowseNew(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, uint32_t if_index, <span class="reserved">const</span> <span class="reserved">char</span> *types, <span class="reserved">const</span> <span class="reserved">char</span> *domain, <a href="#cups_dnssd_browse_cb_t">cups_dnssd_browse_cb_t</a> browse_cb, <span class="reserved">void</span> *cb_data);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dnssd</th>
<td class="description">DNS-SD context</td></tr>
<tr><th>if_index</th>
-<td class="description">Interface index, <code>CUPS_DNSSD_IF_ANY</code>, or <code>CUPS_DNSSD_IF_LOCAL</code></td></tr>
+<td class="description">Interface index, <code>CUPS_DNSSD_IF_INDEX_ANY</code>, or <code>CUPS_DNSSD_IF_INDEX_LOCAL</code></td></tr>
<tr><th>types</th>
<td class="description">Service types</td></tr>
<tr><th>domain</th>
}
</pre>
</p>
+<h3 class="function"><a id="cupsDNSSDCopyComputerName">cupsDNSSDCopyComputerName</a></h3>
+<p class="description">Copy the current human-readable name for the system.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsDNSSDCopyComputerName(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, <span class="reserved">char</span> *buffer, size_t bufsize);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>dnssd</th>
+<td class="description">DNS-SD context</td></tr>
+<tr><th>buffer</th>
+<td class="description">Computer name buffer</td></tr>
+<tr><th>bufsize</th>
+<td class="description">Size of computer name buffer (at least 128 bytes)</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Computer name or <code>NULL</code> on error</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function copies the current human-readable name ("My Computer") to the
+provided buffer. The "dnssd" parameter is a DNS-SD context created with
+<a href="#cupsDNSSDNew"><code>cupsDNSSDNew</code></a>. The "buffer" parameter points to a character array of
+at least 128 bytes and the "bufsize" parameter specifies the actual size of
+the array.</p>
<h3 class="function"><a id="cupsDNSSDCopyHostName">cupsDNSSDCopyHostName</a></h3>
<p class="description">Copy the current mDNS hostname for the system.</p>
<p class="code">
-char *cupsDNSSDCopyHostName(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, char *buffer, size_t bufsize);</p>
+<span class="reserved">char</span> *cupsDNSSDCopyHostName(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, <span class="reserved">char</span> *buffer, size_t bufsize);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dnssd</th>
<h3 class="function"><a id="cupsDNSSDDecodeTXT">cupsDNSSDDecodeTXT</a></h3>
<p class="description">Decode a TXT record into key/value pairs.</p>
<p class="code">
-int cupsDNSSDDecodeTXT(const unsigned char *txtrec, uint16_t txtlen, <a href="#cups_option_t">cups_option_t</a> **txt);</p>
+<span class="reserved">int</span> cupsDNSSDDecodeTXT(<span class="reserved">const</span> <span class="reserved">unsigned</span> <span class="reserved">char</span> *txtrec, uint16_t txtlen, <a href="#cups_option_t">cups_option_t</a> **txt);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>txtrec</th>
<h3 class="function"><a id="cupsDNSSDDelete">cupsDNSSDDelete</a></h3>
<p class="description">Delete a DNS-SD context and all its requests.</p>
<p class="code">
-void cupsDNSSDDelete(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd);</p>
+<span class="reserved">void</span> cupsDNSSDDelete(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dnssd</th>
<h3 class="function"><a id="cupsDNSSDNew">cupsDNSSDNew</a></h3>
<p class="description">Create a new DNS-SD context.</p>
<p class="code">
-<a href="#cups_dnssd_t">cups_dnssd_t</a> *cupsDNSSDNew(<a href="#cups_dnssd_error_cb_t">cups_dnssd_error_cb_t</a> error_cb, void *cb_data);</p>
+<a href="#cups_dnssd_t">cups_dnssd_t</a> *cupsDNSSDNew(<a href="#cups_dnssd_error_cb_t">cups_dnssd_error_cb_t</a> error_cb, <span class="reserved">void</span> *cb_data);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>error_cb</th>
<h3 class="function"><a id="cupsDNSSDQueryDelete">cupsDNSSDQueryDelete</a></h3>
<p class="description">Cancel and delete a query request.</p>
<p class="code">
-void cupsDNSSDQueryDelete(<a href="#cups_dnssd_query_t">cups_dnssd_query_t</a> *query);</p>
+<span class="reserved">void</span> cupsDNSSDQueryDelete(<a href="#cups_dnssd_query_t">cups_dnssd_query_t</a> *query);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>query</th>
<h3 class="function"><a id="cupsDNSSDQueryNew">cupsDNSSDQueryNew</a></h3>
<p class="description">Create a new query request.</p>
<p class="code">
-<a href="#cups_dnssd_query_t">cups_dnssd_query_t</a> *cupsDNSSDQueryNew(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, uint32_t if_index, const char *fullname, uint16_t rrtype, <a href="#cups_dnssd_query_cb_t">cups_dnssd_query_cb_t</a> query_cb, void *cb_data);</p>
+<a href="#cups_dnssd_query_t">cups_dnssd_query_t</a> *cupsDNSSDQueryNew(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, uint32_t if_index, <span class="reserved">const</span> <span class="reserved">char</span> *fullname, uint16_t rrtype, <a href="#cups_dnssd_query_cb_t">cups_dnssd_query_cb_t</a> query_cb, <span class="reserved">void</span> *cb_data);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dnssd</th>
<td class="description">DNS-SD context</td></tr>
<tr><th>if_index</th>
-<td class="description">Interface index or <code>CUPS_DNSSD_IF_ANY</code> or <code>CUPS_DNSSD_IF_LOCAL</code></td></tr>
+<td class="description">Interface index or <code>CUPS_DNSSD_IF_INDEX_ANY</code> or <code>CUPS_DNSSD_IF_INDEX_LOCAL</code></td></tr>
<tr><th>fullname</th>
<td class="description">Full DNS name including types and domain</td></tr>
<tr><th>rrtype</th>
<h3 class="function"><a id="cupsDNSSDResolveDelete">cupsDNSSDResolveDelete</a></h3>
<p class="description">Cancel and free a resolve request.</p>
<p class="code">
-void cupsDNSSDResolveDelete(<a href="#cups_dnssd_resolve_t">cups_dnssd_resolve_t</a> *res);</p>
+<span class="reserved">void</span> cupsDNSSDResolveDelete(<a href="#cups_dnssd_resolve_t">cups_dnssd_resolve_t</a> *res);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>res</th>
<h3 class="function"><a id="cupsDNSSDResolveNew">cupsDNSSDResolveNew</a></h3>
<p class="description">Create a new DNS-SD resolve request.</p>
<p class="code">
-<a href="#cups_dnssd_resolve_t">cups_dnssd_resolve_t</a> *cupsDNSSDResolveNew(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, uint32_t if_index, const char *name, const char *type, const char *domain, <a href="#cups_dnssd_resolve_cb_t">cups_dnssd_resolve_cb_t</a> resolve_cb, void *cb_data);</p>
+<a href="#cups_dnssd_resolve_t">cups_dnssd_resolve_t</a> *cupsDNSSDResolveNew(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, uint32_t if_index, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *type, <span class="reserved">const</span> <span class="reserved">char</span> *domain, <a href="#cups_dnssd_resolve_cb_t">cups_dnssd_resolve_cb_t</a> resolve_cb, <span class="reserved">void</span> *cb_data);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dnssd</th>
<td class="description">DNS-SD context</td></tr>
<tr><th>if_index</th>
-<td class="description">Interface index or <code>CUPS_DNSSD_IF_ANY</code> or <code>CUPS_DNSSD_IF_LOCAL</code></td></tr>
+<td class="description">Interface index or <code>CUPS_DNSSD_IF_INDEX_ANY</code> or <code>CUPS_DNSSD_IF_INDEX_LOCAL</code></td></tr>
<tr><th>name</th>
<td class="description">Service name</td></tr>
<tr><th>type</th>
const char *fullname,
const char *host,
uint16_t port,
- int num_txt,
+ size_t num_txt,
cups_option_t *txt)
{
// Process resolved service
<p class="description">Separate a full service name into an instance
name, registration type, and domain.</p>
<p class="code">
-bool cupsDNSSDSeparateFullName(const char *fullname, char *name, size_t namesize, char *type, size_t typesize, char *domain, size_t domainsize);</p>
+<span class="reserved">bool</span> cupsDNSSDSeparateFullName(<span class="reserved">const</span> <span class="reserved">char</span> *fullname, <span class="reserved">char</span> *name, size_t namesize, <span class="reserved">char</span> *type, size_t typesize, <span class="reserved">char</span> *domain, size_t domainsize);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fullname</th>
<h3 class="function"><a id="cupsDNSSDServiceAdd">cupsDNSSDServiceAdd</a></h3>
<p class="description">Add a service instance.</p>
<p class="code">
-bool cupsDNSSDServiceAdd(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service, const char *types, const char *domain, const char *host, uint16_t port, int num_txt, <a href="#cups_option_t">cups_option_t</a> *txt);</p>
+<span class="reserved">bool</span> cupsDNSSDServiceAdd(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service, <span class="reserved">const</span> <span class="reserved">char</span> *types, <span class="reserved">const</span> <span class="reserved">char</span> *domain, <span class="reserved">const</span> <span class="reserved">char</span> *host, uint16_t port, <span class="reserved">int</span> num_txt, <a href="#cups_option_t">cups_option_t</a> *txt);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>service</th>
<h3 class="function"><a id="cupsDNSSDServiceDelete">cupsDNSSDServiceDelete</a></h3>
<p class="description">Cancel and free a service registration.</p>
<p class="code">
-void cupsDNSSDServiceDelete(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service);</p>
+<span class="reserved">void</span> cupsDNSSDServiceDelete(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>service</th>
<h3 class="function"><a id="cupsDNSSDServiceGetName">cupsDNSSDServiceGetName</a></h3>
<p class="description">Get the service instance name for the service registration.</p>
<p class="code">
-const char *cupsDNSSDServiceGetName(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsDNSSDServiceGetName(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>service</th>
<h3 class="function"><a id="cupsDNSSDServiceNew">cupsDNSSDServiceNew</a></h3>
<p class="description">Create a new named service.</p>
<p class="code">
-<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *cupsDNSSDServiceNew(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, uint32_t if_index, const char *name, <a href="#cups_dnssd_service_cb_t">cups_dnssd_service_cb_t</a> cb, void *cb_data);</p>
+<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *cupsDNSSDServiceNew(<a href="#cups_dnssd_t">cups_dnssd_t</a> *dnssd, uint32_t if_index, <span class="reserved">const</span> <span class="reserved">char</span> *name, <a href="#cups_dnssd_service_cb_t">cups_dnssd_service_cb_t</a> cb, <span class="reserved">void</span> *cb_data);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dnssd</th>
<td class="description">DNS-SD context</td></tr>
<tr><th>if_index</th>
-<td class="description">Interface index, <code>CUPS_DNSSD_IF_ANY</code>, or <code>CUPS_DNSSD_IF_LOCAL</code></td></tr>
+<td class="description">Interface index, <code>CUPS_DNSSD_IF_INDEX_ANY</code>, or <code>CUPS_DNSSD_IF_INDEX_LOCAL</code></td></tr>
<tr><th>name</th>
<td class="description">Name of service</td></tr>
<tr><th>cb</th>
<h3 class="function"><a id="cupsDNSSDServicePublish">cupsDNSSDServicePublish</a></h3>
<p class="description">Publish a service.</p>
<p class="code">
-bool cupsDNSSDServicePublish(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service);</p>
+<span class="reserved">bool</span> cupsDNSSDServicePublish(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>service</th>
<p class="description">Set the geolocation (LOC record) of a
service.</p>
<p class="code">
-bool cupsDNSSDServiceSetLocation(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service, const char *geo_uri);</p>
+<span class="reserved">bool</span> cupsDNSSDServiceSetLocation(<a href="#cups_dnssd_service_t">cups_dnssd_service_t</a> *service, <span class="reserved">const</span> <span class="reserved">char</span> *geo_uri);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>service</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsDirClose">cupsDirClose</a></h3>
<p class="description">Close a directory.</p>
<p class="code">
-void cupsDirClose(<a href="#cups_dir_t">cups_dir_t</a> *dp);</p>
+<span class="reserved">void</span> cupsDirClose(<a href="#cups_dir_t">cups_dir_t</a> *dp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsDirOpen">cupsDirOpen</a></h3>
<p class="description">Open a directory.</p>
<p class="code">
-<a href="#cups_dir_t">cups_dir_t</a> *cupsDirOpen(const char *directory);</p>
+<a href="#cups_dir_t">cups_dir_t</a> *cupsDirOpen(<span class="reserved">const</span> <span class="reserved">char</span> *directory);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>directory</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsDirRewind">cupsDirRewind</a></h3>
<p class="description">Rewind to the start of the directory.</p>
<p class="code">
-void cupsDirRewind(<a href="#cups_dir_t">cups_dir_t</a> *dp);</p>
+<span class="reserved">void</span> cupsDirRewind(<a href="#cups_dir_t">cups_dir_t</a> *dp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dp</th>
<h3 class="function"><span class="info"> CUPS 1.1.20/macOS 10.4 </span><a id="cupsDoAuthentication">cupsDoAuthentication</a></h3>
<p class="description">Authenticate a request.</p>
<p class="code">
-int cupsDoAuthentication(<a href="#http_t">http_t</a> *http, const char *method, const char *resource);</p>
+<span class="reserved">int</span> cupsDoAuthentication(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *method, <span class="reserved">const</span> <span class="reserved">char</span> *resource);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><a id="cupsDoFileRequest">cupsDoFileRequest</a></h3>
<p class="description">Do an IPP request with a file.</p>
<p class="code">
-<a href="#ipp_t">ipp_t</a> *cupsDoFileRequest(<a href="#http_t">http_t</a> *http, <a href="#ipp_t">ipp_t</a> *request, const char *resource, const char *filename);</p>
+<a href="#ipp_t">ipp_t</a> *cupsDoFileRequest(<a href="#http_t">http_t</a> *http, <a href="#ipp_t">ipp_t</a> *request, <span class="reserved">const</span> <span class="reserved">char</span> *resource, <span class="reserved">const</span> <span class="reserved">char</span> *filename);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.3/macOS 10.5 </span><a id="cupsDoIORequest">cupsDoIORequest</a></h3>
<p class="description">Do an IPP request with file descriptors.</p>
<p class="code">
-<a href="#ipp_t">ipp_t</a> *cupsDoIORequest(<a href="#http_t">http_t</a> *http, <a href="#ipp_t">ipp_t</a> *request, const char *resource, int infile, int outfile);</p>
+<a href="#ipp_t">ipp_t</a> *cupsDoIORequest(<a href="#http_t">http_t</a> *http, <a href="#ipp_t">ipp_t</a> *request, <span class="reserved">const</span> <span class="reserved">char</span> *resource, <span class="reserved">int</span> infile, <span class="reserved">int</span> outfile);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><a id="cupsDoRequest">cupsDoRequest</a></h3>
<p class="description">Do an IPP request.</p>
<p class="code">
-<a href="#ipp_t">ipp_t</a> *cupsDoRequest(<a href="#http_t">http_t</a> *http, <a href="#ipp_t">ipp_t</a> *request, const char *resource);</p>
+<a href="#ipp_t">ipp_t</a> *cupsDoRequest(<a href="#http_t">http_t</a> *http, <a href="#ipp_t">ipp_t</a> *request, <span class="reserved">const</span> <span class="reserved">char</span> *resource);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.3/macOS 10.14 </span><a id="cupsEncodeOption">cupsEncodeOption</a></h3>
<p class="description">Encode a single option into an IPP attribute.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsEncodeOption(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group_tag, const char *name, const char *value);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsEncodeOption(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group_tag, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><a id="cupsEncodeOptions">cupsEncodeOptions</a></h3>
<p class="description">Encode printer options into IPP attributes.</p>
<p class="code">
-void cupsEncodeOptions(<a href="#ipp_t">ipp_t</a> *ipp, int num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
+<span class="reserved">void</span> cupsEncodeOptions(<a href="#ipp_t">ipp_t</a> *ipp, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsEncodeOptions2">cupsEncodeOptions2</a></h3>
<p class="description">Encode printer options into IPP attributes for a group.</p>
<p class="code">
-void cupsEncodeOptions2(<a href="#ipp_t">ipp_t</a> *ipp, int num_options, <a href="#cups_option_t">cups_option_t</a> *options, ipp_tag_t group_tag);</p>
+<span class="reserved">void</span> cupsEncodeOptions2(<a href="#ipp_t">ipp_t</a> *ipp, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> *options, ipp_tag_t group_tag);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> DEPRECATED </span><a id="cupsEncryption">cupsEncryption</a></h3>
<p class="description">Get the current encryption settings.</p>
<p class="code">
-<a href="#http_encryption_t">http_encryption_t</a> cupsEncryption(void);</p>
+<a href="#http_encryption_t">http_encryption_t</a> cupsEncryption(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Encryption settings</p>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="cupsEnumDests">cupsEnumDests</a></h3>
<p class="description">Enumerate available destinations with a callback function.</p>
<p class="code">
-int cupsEnumDests(unsigned flags, int msec, int *cancel, <a href="#cups_ptype_t">cups_ptype_t</a> type, <a href="#cups_ptype_t">cups_ptype_t</a> mask, <a href="#cups_dest_cb_t">cups_dest_cb_t</a> cb, void *user_data);</p>
+<span class="reserved">int</span> cupsEnumDests(<span class="reserved">unsigned</span> flags, <span class="reserved">int</span> msec, <span class="reserved">int</span> *cancel, <a href="#cups_ptype_t">cups_ptype_t</a> type, <a href="#cups_ptype_t">cups_ptype_t</a> mask, <a href="#cups_dest_cb_t">cups_dest_cb_t</a> cb, <span class="reserved">void</span> *user_data);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>flags</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileClose">cupsFileClose</a></h3>
<p class="description">Close a CUPS file.</p>
<p class="code">
-int cupsFileClose(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
+<span class="reserved">int</span> cupsFileClose(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileEOF">cupsFileEOF</a></h3>
<p class="description">Return the end-of-file status.</p>
<p class="code">
-int cupsFileEOF(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
+<span class="reserved">int</span> cupsFileEOF(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileFind">cupsFileFind</a></h3>
<p class="description">Find a file using the specified path.</p>
<p class="code">
-const char *cupsFileFind(const char *filename, const char *path, int executable, char *buffer, int bufsize);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsFileFind(<span class="reserved">const</span> <span class="reserved">char</span> *filename, <span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">int</span> executable, <span class="reserved">char</span> *buffer, <span class="reserved">int</span> bufsize);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>filename</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileFlush">cupsFileFlush</a></h3>
<p class="description">Flush pending output.</p>
<p class="code">
-int cupsFileFlush(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
+<span class="reserved">int</span> cupsFileFlush(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileGetChar">cupsFileGetChar</a></h3>
<p class="description">Get a single character from a file.</p>
<p class="code">
-int cupsFileGetChar(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
+<span class="reserved">int</span> cupsFileGetChar(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileGetConf">cupsFileGetConf</a></h3>
<p class="description">Get a line from a configuration file.</p>
<p class="code">
-char *cupsFileGetConf(<a href="#cups_file_t">cups_file_t</a> *fp, char *buf, size_t buflen, char **value, int *linenum);</p>
+<span class="reserved">char</span> *cupsFileGetConf(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">char</span> *buf, size_t buflen, <span class="reserved">char</span> **value, <span class="reserved">int</span> *linenum);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<p class="description">Get a CR and/or LF-terminated line that may
contain binary data.</p>
<p class="code">
-size_t cupsFileGetLine(<a href="#cups_file_t">cups_file_t</a> *fp, char *buf, size_t buflen);</p>
+size_t cupsFileGetLine(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">char</span> *buf, size_t buflen);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileGets">cupsFileGets</a></h3>
<p class="description">Get a CR and/or LF-terminated line.</p>
<p class="code">
-char *cupsFileGets(<a href="#cups_file_t">cups_file_t</a> *fp, char *buf, size_t buflen);</p>
+<span class="reserved">char</span> *cupsFileGets(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">char</span> *buf, size_t buflen);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsFileIsCompressed">cupsFileIsCompressed</a></h3>
<p class="description">Return whether a file is compressed.</p>
<p class="code">
-bool cupsFileIsCompressed(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
+<span class="reserved">bool</span> cupsFileIsCompressed(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileLock">cupsFileLock</a></h3>
<p class="description">Temporarily lock access to a file.</p>
<p class="code">
-int cupsFileLock(<a href="#cups_file_t">cups_file_t</a> *fp, int block);</p>
+<span class="reserved">int</span> cupsFileLock(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">int</span> block);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileNumber">cupsFileNumber</a></h3>
<p class="description">Return the file descriptor associated with a CUPS file.</p>
<p class="code">
-int cupsFileNumber(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
+<span class="reserved">int</span> cupsFileNumber(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileOpen">cupsFileOpen</a></h3>
<p class="description">Open a CUPS file.</p>
<p class="code">
-<a href="#cups_file_t">cups_file_t</a> *cupsFileOpen(const char *filename, const char *mode);</p>
+<a href="#cups_file_t">cups_file_t</a> *cupsFileOpen(<span class="reserved">const</span> <span class="reserved">char</span> *filename, <span class="reserved">const</span> <span class="reserved">char</span> *mode);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>filename</th>
supplied which enables Flate compression of the file. Compression is
not supported for the "a" (append) mode.<br>
<br>
+When opening for writing ("w") or append ("a"), an optional 'm###' suffix
+can be used to set the permissions of the opened file.<br>
+<br>
When opening a socket connection, the filename is a string of the form
"address:port" or "hostname:port". The socket will make an IPv4 or IPv6
connection as needed, generally preferring IPv6 connections when there is
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileOpenFd">cupsFileOpenFd</a></h3>
<p class="description">Open a CUPS file using a file descriptor.</p>
<p class="code">
-<a href="#cups_file_t">cups_file_t</a> *cupsFileOpenFd(int fd, const char *mode);</p>
+<a href="#cups_file_t">cups_file_t</a> *cupsFileOpenFd(<span class="reserved">int</span> fd, <span class="reserved">const</span> <span class="reserved">char</span> *mode);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fd</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFilePeekChar">cupsFilePeekChar</a></h3>
<p class="description">Peek at the next character from a file.</p>
<p class="code">
-int cupsFilePeekChar(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
+<span class="reserved">int</span> cupsFilePeekChar(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFilePrintf">cupsFilePrintf</a></h3>
<p class="description">Write a formatted string.</p>
<p class="code">
-int cupsFilePrintf(<a href="#cups_file_t">cups_file_t</a> *fp, const char *format, ...);</p>
+<span class="reserved">int</span> cupsFilePrintf(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">const</span> <span class="reserved">char</span> *format, ...);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFilePutChar">cupsFilePutChar</a></h3>
<p class="description">Write a character.</p>
<p class="code">
-int cupsFilePutChar(<a href="#cups_file_t">cups_file_t</a> *fp, int c);</p>
+<span class="reserved">int</span> cupsFilePutChar(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">int</span> c);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 1.4/macOS 10.6 </span><a id="cupsFilePutConf">cupsFilePutConf</a></h3>
<p class="description">Write a configuration line.</p>
<p class="code">
-ssize_t cupsFilePutConf(<a href="#cups_file_t">cups_file_t</a> *fp, const char *directive, const char *value);</p>
+ssize_t cupsFilePutConf(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">const</span> <span class="reserved">char</span> *directive, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFilePuts">cupsFilePuts</a></h3>
<p class="description">Write a string.</p>
<p class="code">
-int cupsFilePuts(<a href="#cups_file_t">cups_file_t</a> *fp, const char *s);</p>
+<span class="reserved">int</span> cupsFilePuts(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">const</span> <span class="reserved">char</span> *s);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileRead">cupsFileRead</a></h3>
<p class="description">Read from a file.</p>
<p class="code">
-ssize_t cupsFileRead(<a href="#cups_file_t">cups_file_t</a> *fp, char *buf, size_t bytes);</p>
+ssize_t cupsFileRead(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">char</span> *buf, size_t bytes);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileStderr">cupsFileStderr</a></h3>
<p class="description">Return a CUPS file associated with stderr.</p>
<p class="code">
-<a href="#cups_file_t">cups_file_t</a> *cupsFileStderr(void);</p>
+<a href="#cups_file_t">cups_file_t</a> *cupsFileStderr(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">CUPS file</p>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileStdin">cupsFileStdin</a></h3>
<p class="description">Return a CUPS file associated with stdin.</p>
<p class="code">
-<a href="#cups_file_t">cups_file_t</a> *cupsFileStdin(void);</p>
+<a href="#cups_file_t">cups_file_t</a> *cupsFileStdin(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">CUPS file</p>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileStdout">cupsFileStdout</a></h3>
<p class="description">Return a CUPS file associated with stdout.</p>
<p class="code">
-<a href="#cups_file_t">cups_file_t</a> *cupsFileStdout(void);</p>
+<a href="#cups_file_t">cups_file_t</a> *cupsFileStdout(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">CUPS file</p>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileTell">cupsFileTell</a></h3>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileUnlock">cupsFileUnlock</a></h3>
<p class="description">Unlock access to a file.</p>
<p class="code">
-int cupsFileUnlock(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
+<span class="reserved">int</span> cupsFileUnlock(<a href="#cups_file_t">cups_file_t</a> *fp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsFileWrite">cupsFileWrite</a></h3>
<p class="description">Write to a file.</p>
<p class="code">
-ssize_t cupsFileWrite(<a href="#cups_file_t">cups_file_t</a> *fp, const char *buf, size_t bytes);</p>
+ssize_t cupsFileWrite(<a href="#cups_file_t">cups_file_t</a> *fp, <span class="reserved">const</span> <span class="reserved">char</span> *buf, size_t bytes);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fp</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="cupsFindDestDefault">cupsFindDestDefault</a></h3>
<p class="description">Find the default value(s) for the given option.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsFindDestDefault(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, const char *option);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsFindDestDefault(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">const</span> <span class="reserved">char</span> *option);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="cupsFindDestReady">cupsFindDestReady</a></h3>
<p class="description">Find the default value(s) for the given option.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsFindDestReady(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, const char *option);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsFindDestReady(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">const</span> <span class="reserved">char</span> *option);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="cupsFindDestSupported">cupsFindDestSupported</a></h3>
<p class="description">Find the default value(s) for the given option.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsFindDestSupported(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, const char *option);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *cupsFindDestSupported(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">const</span> <span class="reserved">char</span> *option);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsFormDecode">cupsFormDecode</a></h3>
<p class="description">Decode URL-encoded form data.</p>
<p class="code">
-int cupsFormDecode(const char *data, <a href="#cups_option_t">cups_option_t</a> **vars);</p>
+<span class="reserved">int</span> cupsFormDecode(<span class="reserved">const</span> <span class="reserved">char</span> *data, <a href="#cups_option_t">cups_option_t</a> **vars);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>data</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsFormEncode">cupsFormEncode</a></h3>
<p class="description">Encode options as URL-encoded form data.</p>
<p class="code">
-char *cupsFormEncode(const char *url, int num_vars, <a href="#cups_option_t">cups_option_t</a> *vars);</p>
+<span class="reserved">char</span> *cupsFormEncode(<span class="reserved">const</span> <span class="reserved">char</span> *url, <span class="reserved">int</span> num_vars, <a href="#cups_option_t">cups_option_t</a> *vars);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>url</th>
<br>
Use <code>free</code> to return the memory used for the string.
+</p>
+<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsFormatString">cupsFormatString</a></h3>
+<p class="description">Format a UTF-8 string into a fixed size buffer.</p>
+<p class="code">
+ssize_t cupsFormatString(<span class="reserved">char</span> *buffer, size_t bufsize, <span class="reserved">const</span> <span class="reserved">char</span> *format, ...);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>buffer</th>
+<td class="description">Output buffer</td></tr>
+<tr><th>bufsize</th>
+<td class="description">Size of output buffer</td></tr>
+<tr><th>format</th>
+<td class="description"><code>printf</code>-style format string</td></tr>
+<tr><th>...</th>
+<td class="description">Additional arguments</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Number of bytes formatted</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function formats a UTF-8 string into a fixed size buffer, escaping
+special/control characters as needed so they can be safely displayed or
+logged.
+
+</p>
+<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsFormatStringv">cupsFormatStringv</a></h3>
+<p class="description">Format a UTF-8 string into a fixed size buffer (<code>va_list</code> version).</p>
+<p class="code">
+ssize_t cupsFormatStringv(<span class="reserved">char</span> *buffer, size_t bufsize, <span class="reserved">const</span> <span class="reserved">char</span> *format, va_list ap);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>buffer</th>
+<td class="description">Output buffer</td></tr>
+<tr><th>bufsize</th>
+<td class="description">Size of output buffer</td></tr>
+<tr><th>format</th>
+<td class="description">printf-style format string</td></tr>
+<tr><th>ap</th>
+<td class="description">Pointer to additional arguments</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Number of bytes formatted</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function formats a UTF-8 string into a fixed size buffer using a
+variable argument pointer, escaping special/control characters as needed so
+they can be safely displayed or logged.
+
</p>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="cupsFreeDestInfo">cupsFreeDestInfo</a></h3>
<p class="description">Free destination information obtained using
<a href="#cupsCopyDestInfo"><code>cupsCopyDestInfo</code></a>.</p>
<p class="code">
-void cupsFreeDestInfo(<a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo);</p>
+<span class="reserved">void</span> cupsFreeDestInfo(<a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dinfo</th>
<h3 class="function"><a id="cupsFreeDests">cupsFreeDests</a></h3>
<p class="description">Free the memory used by the list of destinations.</p>
<p class="code">
-void cupsFreeDests(int num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests);</p>
+<span class="reserved">void</span> cupsFreeDests(<span class="reserved">int</span> num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>num_dests</th>
<h3 class="function"><a id="cupsFreeJobs">cupsFreeJobs</a></h3>
<p class="description">Free memory used by job data.</p>
<p class="code">
-void cupsFreeJobs(int num_jobs, <a href="#cups_job_t">cups_job_t</a> *jobs);</p>
+<span class="reserved">void</span> cupsFreeJobs(<span class="reserved">int</span> num_jobs, <a href="#cups_job_t">cups_job_t</a> *jobs);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>num_jobs</th>
<h3 class="function"><a id="cupsFreeOptions">cupsFreeOptions</a></h3>
<p class="description">Free all memory used by options.</p>
<p class="code">
-void cupsFreeOptions(int num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
+<span class="reserved">void</span> cupsFreeOptions(<span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>num_options</th>
<tr><th>options</th>
<td class="description">Pointer to options</td></tr>
</tbody></table>
+<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsGetClock">cupsGetClock</a></h3>
+<p class="description">Get a monotonic clock value in seconds.</p>
+<p class="code">
+<span class="reserved">double</span> cupsGetClock(<span class="reserved">void</span>);</p>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Elapsed seconds</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns a monotonically increasing clock value in seconds. The
+first call will always return 0.0. Subsequent calls will return the number
+of seconds that have elapsed since the first call, regardless of system time
+changes, sleep, etc. The sub-second accuracy varies based on the operating
+system and hardware but is typically 10ms or better.
+
+</p>
<h3 class="function"><a id="cupsGetCredentialsExpiration">cupsGetCredentialsExpiration</a></h3>
<p class="description">Return the expiration date of the credentials.</p>
<p class="code">
-time_t cupsGetCredentialsExpiration(const char *credentials);</p>
+time_t cupsGetCredentialsExpiration(<span class="reserved">const</span> <span class="reserved">char</span> *credentials);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>credentials</th>
<h3 class="function"><a id="cupsGetCredentialsInfo">cupsGetCredentialsInfo</a></h3>
<p class="description">Return a string describing the credentials.</p>
<p class="code">
-char *cupsGetCredentialsInfo(const char *credentials, char *buffer, size_t bufsize);</p>
+<span class="reserved">char</span> *cupsGetCredentialsInfo(<span class="reserved">const</span> <span class="reserved">char</span> *credentials, <span class="reserved">char</span> *buffer, size_t bufsize);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>credentials</th>
<h3 class="function"><a id="cupsGetCredentialsTrust">cupsGetCredentialsTrust</a></h3>
<p class="description">Return the trust of credentials.</p>
<p class="code">
-<a href="#http_trust_t">http_trust_t</a> cupsGetCredentialsTrust(const char *path, const char *common_name, const char *credentials);</p>
+<a href="#http_trust_t">http_trust_t</a> cupsGetCredentialsTrust(<span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">const</span> <span class="reserved">char</span> *common_name, <span class="reserved">const</span> <span class="reserved">char</span> *credentials, <span class="reserved">bool</span> require_ca);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>path</th>
<td class="description">Common name for trust lookup</td></tr>
<tr><th>credentials</th>
<td class="description">Credentials</td></tr>
+<tr><th>require_ca</th>
+<td class="description">Require a CA-signed certificate?</td></tr>
</tbody></table>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Level of trust</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function determines the level of trust for the supplied credentials.
+The "path" parameter specifies the certificate/key store for known
+credentials and certificate authorities. The "common_name" parameter
+specifies the FQDN of the service being accessed such as
+"printer.example.com". The "credentials" parameter provides the credentials
+being evaluated, which are usually obtained with the
+<a href="#httpCopyPeerCredentials"><code>httpCopyPeerCredentials</code></a> function. The "require_ca" parameter
+specifies whether a CA-signed certificate is required for trust.<br>
+<br>
+The <code>AllowAnyRoot</code>, <code>AllowExpiredCerts</code>, <code>TrustOnFirstUse</code>, and
+<code>ValidateCerts</code> options in the "client.conf" file (or corresponding
+preferences file on macOS) control the trust policy, which defaults to
+AllowAnyRoot=Yes, AllowExpiredCerts=No, TrustOnFirstUse=Yes, and
+ValidateCerts=No. When the "require_ca" parameter is <code>true</code> the AllowAnyRoot
+and TrustOnFirstUse policies are turned off ("No").<br>
+<br>
+The returned trust value can be one of the following:
+
+</p><ul>
+<li><code>HTTP_TRUST_OK</code>: Credentials are OK/trusted
+</li>
+<li><code>HTTP_TRUST_INVALID</code>: Credentials are invalid
+</li>
+<li><code>HTTP_TRUST_EXPIRED</code>: Credentials are expired
+</li>
+<li><code>HTTP_TRUST_RENEWED</code>: Credentials have been renewed
+</li>
+<li><code>HTTP_TRUST_UNKNOWN</code>: Credentials are unknown/new</li>
+</ul>
<h3 class="function"><a id="cupsGetDest">cupsGetDest</a></h3>
<p class="description">Get the named destination from the list.</p>
<p class="code">
-<a href="#cups_dest_t">cups_dest_t</a> *cupsGetDest(const char *name, const char *instance, int num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests);</p>
+<a href="#cups_dest_t">cups_dest_t</a> *cupsGetDest(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *instance, <span class="reserved">int</span> num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>name</th>
<p class="description">Get a media name, dimension, and margins for a
specific size.</p>
<p class="code">
-int cupsGetDestMediaByIndex(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, int n, unsigned flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
+<span class="reserved">int</span> cupsGetDestMediaByIndex(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">int</span> n, <span class="reserved">unsigned</span> flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsGetDestMediaByIndex2">cupsGetDestMediaByIndex2</a></h3>
<p class="description">Get specific media information.</p>
<p class="code">
-bool cupsGetDestMediaByIndex2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, size_t n, unsigned flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
+<span class="reserved">bool</span> cupsGetDestMediaByIndex2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, size_t n, <span class="reserved">unsigned</span> flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="cupsGetDestMediaByName">cupsGetDestMediaByName</a></h3>
<p class="description">Get media names, dimensions, and margins.</p>
<p class="code">
-int cupsGetDestMediaByName(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, const char *name, unsigned flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
+<span class="reserved">int</span> cupsGetDestMediaByName(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">unsigned</span> flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="cupsGetDestMediaByName2">cupsGetDestMediaByName2</a></h3>
<p class="description">Get media names, dimensions, and margins.</p>
<p class="code">
-bool cupsGetDestMediaByName2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, const char *name, unsigned flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
+<span class="reserved">bool</span> cupsGetDestMediaByName2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">unsigned</span> flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="cupsGetDestMediaBySize">cupsGetDestMediaBySize</a></h3>
<p class="description">Get media names, dimensions, and margins.</p>
<p class="code">
-int cupsGetDestMediaBySize(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, int width, int length, unsigned flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
+<span class="reserved">int</span> cupsGetDestMediaBySize(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">int</span> width, <span class="reserved">int</span> length, <span class="reserved">unsigned</span> flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsGetDestMediaBySize2">cupsGetDestMediaBySize2</a></h3>
<p class="description">Get media names, dimensions, and margins.</p>
<p class="code">
-bool cupsGetDestMediaBySize2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, int width, int length, unsigned flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
+<span class="reserved">bool</span> cupsGetDestMediaBySize2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">int</span> width, <span class="reserved">int</span> length, <span class="reserved">unsigned</span> flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<p class="description">Get the number of sizes supported by a
destination.</p>
<p class="code">
-int cupsGetDestMediaCount(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, unsigned flags);</p>
+<span class="reserved">int</span> cupsGetDestMediaCount(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">unsigned</span> flags);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="cupsGetDestMediaDefault">cupsGetDestMediaDefault</a></h3>
<p class="description">Get the default size for a destination.</p>
<p class="code">
-int cupsGetDestMediaDefault(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, unsigned flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
+<span class="reserved">int</span> cupsGetDestMediaDefault(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">unsigned</span> flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsGetDestMediaDefault2">cupsGetDestMediaDefault2</a></h3>
<p class="description">Get the default size for a destination.</p>
<p class="code">
-bool cupsGetDestMediaDefault2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, unsigned flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
+<span class="reserved">bool</span> cupsGetDestMediaDefault2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">unsigned</span> flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.0/macOS 10.10 </span><a id="cupsGetDestWithURI">cupsGetDestWithURI</a></h3>
<p class="description">Get a destination associated with a URI.</p>
<p class="code">
-<a href="#cups_dest_t">cups_dest_t</a> *cupsGetDestWithURI(const char *name, const char *uri);</p>
+<a href="#cups_dest_t">cups_dest_t</a> *cupsGetDestWithURI(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *uri);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>name</th>
<h3 class="function"><span class="info"> CUPS 1.1.21/macOS 10.4 </span><a id="cupsGetDests2">cupsGetDests2</a></h3>
<p class="description">Get the list of destinations from the specified server.</p>
<p class="code">
-int cupsGetDests2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> **dests);</p>
+<span class="reserved">int</span> cupsGetDests2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> **dests);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsGetEncryption">cupsGetEncryption</a></h3>
<p class="description">Get the current encryption settings.</p>
<p class="code">
-<a href="#http_encryption_t">http_encryption_t</a> cupsGetEncryption(void);</p>
+<a href="#http_encryption_t">http_encryption_t</a> cupsGetEncryption(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Encryption settings</p>
<h4 class="discussion">Discussion</h4>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsGetError">cupsGetError</a></h3>
<p class="description">Return the last IPP status code received on the current thread.</p>
<p class="code">
-ipp_status_t cupsGetError(void);</p>
+ipp_status_t cupsGetError(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">IPP status code from last request</p>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsGetErrorString">cupsGetErrorString</a></h3>
<p class="description">Return the last IPP status-message received on the current thread.</p>
<p class="code">
-const char *cupsGetErrorString(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsGetErrorString(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">status-message text from last request</p>
<h3 class="function"><span class="info"> CUPS 1.1.20/macOS 10.4 </span><a id="cupsGetFd">cupsGetFd</a></h3>
<p class="description">Get a file from the server.</p>
<p class="code">
-http_status_t cupsGetFd(<a href="#http_t">http_t</a> *http, const char *resource, int fd);</p>
+http_status_t cupsGetFd(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *resource, <span class="reserved">int</span> fd);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.1.20/macOS 10.4 </span><a id="cupsGetFile">cupsGetFile</a></h3>
<p class="description">Get a file from the server.</p>
<p class="code">
-http_status_t cupsGetFile(<a href="#http_t">http_t</a> *http, const char *resource, const char *filename);</p>
+http_status_t cupsGetFile(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *resource, <span class="reserved">const</span> <span class="reserved">char</span> *filename);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.2.4/macOS 10.13 </span><a id="cupsGetIntegerOption">cupsGetIntegerOption</a></h3>
<p class="description">Get an integer option value.</p>
<p class="code">
-int cupsGetIntegerOption(const char *name, int num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
+<span class="reserved">int</span> cupsGetIntegerOption(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>name</th>
<h3 class="function"><span class="info"> CUPS 1.1.21/macOS 10.4 </span><a id="cupsGetJobs2">cupsGetJobs2</a></h3>
<p class="description">Get the jobs from the specified server.</p>
<p class="code">
-int cupsGetJobs2(<a href="#http_t">http_t</a> *http, <a href="#cups_job_t">cups_job_t</a> **jobs, const char *name, int myjobs, int whichjobs);</p>
+<span class="reserved">int</span> cupsGetJobs2(<a href="#http_t">http_t</a> *http, <a href="#cups_job_t">cups_job_t</a> **jobs, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> myjobs, <span class="reserved">int</span> whichjobs);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.4/macOS 10.6 </span><a id="cupsGetNamedDest">cupsGetNamedDest</a></h3>
<p class="description">Get options for the named destination.</p>
<p class="code">
-<a href="#cups_dest_t">cups_dest_t</a> *cupsGetNamedDest(<a href="#http_t">http_t</a> *http, const char *name, const char *instance);</p>
+<a href="#cups_dest_t">cups_dest_t</a> *cupsGetNamedDest(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *instance);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><a id="cupsGetOption">cupsGetOption</a></h3>
<p class="description">Get an option value.</p>
<p class="code">
-const char *cupsGetOption(const char *name, int num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsGetOption(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> *options);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>name</th>
<p class="description">Get a password from the user using the current
password callback.</p>
<p class="code">
-const char *cupsGetPassword2(const char *prompt, <a href="#http_t">http_t</a> *http, const char *method, const char *resource);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsGetPassword2(<span class="reserved">const</span> <span class="reserved">char</span> *prompt, <a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *method, <span class="reserved">const</span> <span class="reserved">char</span> *resource);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>prompt</th>
<h3 class="function"><a id="cupsGetRand">cupsGetRand</a></h3>
<p class="description">Return a 32-bit pseudo-random number.</p>
<p class="code">
-unsigned cupsGetRand(void);</p>
+<span class="reserved">unsigned</span> cupsGetRand(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Random number</p>
<h4 class="discussion">Discussion</h4>
<h3 class="function"><span class="info"> CUPS 1.4/macOS 10.6 </span><a id="cupsGetResponse">cupsGetResponse</a></h3>
<p class="description">Get a response to an IPP request.</p>
<p class="code">
-<a href="#ipp_t">ipp_t</a> *cupsGetResponse(<a href="#http_t">http_t</a> *http, const char *resource);</p>
+<a href="#ipp_t">ipp_t</a> *cupsGetResponse(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *resource);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsGetServer">cupsGetServer</a></h3>
<p class="description">Return the hostname/address of the current server.</p>
<p class="code">
-const char *cupsGetServer(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsGetServer(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Server name</p>
<h4 class="discussion">Discussion</h4>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsGetUser">cupsGetUser</a></h3>
<p class="description">Return the current user's name.</p>
<p class="code">
-const char *cupsGetUser(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsGetUser(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">User name</p>
<h4 class="discussion">Discussion</h4>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsGetUserAgent">cupsGetUserAgent</a></h3>
<p class="description">Return the default HTTP User-Agent string.</p>
<p class="code">
-const char *cupsGetUserAgent(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsGetUserAgent(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">User-Agent string</p>
<h3 class="function"><a id="cupsHMACData">cupsHMACData</a></h3>
<p class="description">Perform a HMAC function on the given data.</p>
<p class="code">
-ssize_t cupsHMACData(const char *algorithm, const unsigned char *key, size_t keylen, const void *data, size_t datalen, unsigned char *hmac, size_t hmacsize);</p>
+ssize_t cupsHMACData(<span class="reserved">const</span> <span class="reserved">char</span> *algorithm, <span class="reserved">const</span> <span class="reserved">unsigned</span> <span class="reserved">char</span> *key, size_t keylen, <span class="reserved">const</span> <span class="reserved">void</span> *data, size_t datalen, <span class="reserved">unsigned</span> <span class="reserved">char</span> *hmac, size_t hmacsize);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>algorithm</th>
<h3 class="function"><a id="cupsHashData">cupsHashData</a></h3>
<p class="description">Perform a hash function on the given data.</p>
<p class="code">
-ssize_t cupsHashData(const char *algorithm, const void *data, size_t datalen, unsigned char *hash, size_t hashsize);</p>
+ssize_t cupsHashData(<span class="reserved">const</span> <span class="reserved">char</span> *algorithm, <span class="reserved">const</span> <span class="reserved">void</span> *data, size_t datalen, <span class="reserved">unsigned</span> <span class="reserved">char</span> *hash, size_t hashsize);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>algorithm</th>
<h3 class="function"><a id="cupsHashString">cupsHashString</a></h3>
<p class="description">Format a hash value as a hexadecimal string.</p>
<p class="code">
-const char *cupsHashString(const unsigned char *hash, size_t hashsize, char *buffer, size_t bufsize);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsHashString(<span class="reserved">const</span> <span class="reserved">unsigned</span> <span class="reserved">char</span> *hash, size_t hashsize, <span class="reserved">char</span> *buffer, size_t bufsize);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>hash</th>
<p class="description">Formatted string</p>
<h4 class="discussion">Discussion</h4>
<p class="discussion">The passed buffer must be at least 2 * hashsize + 1 characters in length.</p>
+<h3 class="function"><a id="cupsJSONAdd">cupsJSONAdd</a></h3>
+<p class="description">Add a node to a JSON node.</p>
+<p class="code">
+<span class="reserved">void</span> cupsJSONAdd(<a href="#cups_json_t">cups_json_t</a> *parent, <a href="#cups_json_t">cups_json_t</a> *after, <a href="#cups_json_t">cups_json_t</a> *node);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>parent</th>
+<td class="description">Parent JSON node</td></tr>
+<tr><th>after</th>
+<td class="description">Previous sibling node or <code>NULL</code> to append to the end</td></tr>
+<tr><th>node</th>
+<td class="description">JSON node to add</td></tr>
+</tbody></table>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function adds an existing JSON node as a child of other JSON node.
+The "parent" argument specifies the node to add to. The "after" argument
+specifies a child of the parent node or <code>NULL</code> to append to the end of the
+children.<br>
+<br>
+Note: The node being added must not already be the child of another parent.</p>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJSONDelete">cupsJSONDelete</a></h3>
<p class="description">Delete a JSON node and all of its children.</p>
<p class="code">
-void cupsJSONDelete(<a href="#cups_json_t">cups_json_t</a> *json);</p>
+<span class="reserved">void</span> cupsJSONDelete(<a href="#cups_json_t">cups_json_t</a> *json);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>json</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJSONExportFile">cupsJSONExportFile</a></h3>
<p class="description">Save a JSON node tree to a file.</p>
<p class="code">
-bool cupsJSONExportFile(<a href="#cups_json_t">cups_json_t</a> *json, const char *filename);</p>
+<span class="reserved">bool</span> cupsJSONExportFile(<a href="#cups_json_t">cups_json_t</a> *json, <span class="reserved">const</span> <span class="reserved">char</span> *filename);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>json</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJSONExportString">cupsJSONExportString</a></h3>
<p class="description">Save a JSON node tree to a string.</p>
<p class="code">
-char *cupsJSONExportString(<a href="#cups_json_t">cups_json_t</a> *json);</p>
+<span class="reserved">char</span> *cupsJSONExportString(<a href="#cups_json_t">cups_json_t</a> *json);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>json</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJSONFind">cupsJSONFind</a></h3>
<p class="description">Find the value(s) associated with a given key.</p>
<p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJSONFind(<a href="#cups_json_t">cups_json_t</a> *json, const char *key);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJSONFind(<a href="#cups_json_t">cups_json_t</a> *json, <span class="reserved">const</span> <span class="reserved">char</span> *key);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>json</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJSONGetKey">cupsJSONGetKey</a></h3>
<p class="description">Get the key string, if any.</p>
<p class="code">
-const char *cupsJSONGetKey(<a href="#cups_json_t">cups_json_t</a> *json);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsJSONGetKey(<a href="#cups_json_t">cups_json_t</a> *json);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>json</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJSONGetNumber">cupsJSONGetNumber</a></h3>
<p class="description">Get the number value, if any.</p>
<p class="code">
-double cupsJSONGetNumber(<a href="#cups_json_t">cups_json_t</a> *json);</p>
+<span class="reserved">double</span> cupsJSONGetNumber(<a href="#cups_json_t">cups_json_t</a> *json);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>json</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJSONGetString">cupsJSONGetString</a></h3>
<p class="description">Get the string value, if any.</p>
<p class="code">
-const char *cupsJSONGetString(<a href="#cups_json_t">cups_json_t</a> *json);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsJSONGetString(<a href="#cups_json_t">cups_json_t</a> *json);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>json</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJSONImportFile">cupsJSONImportFile</a></h3>
<p class="description">Load a JSON object file.</p>
<p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJSONImportFile(const char *filename);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJSONImportFile(<span class="reserved">const</span> <span class="reserved">char</span> *filename);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>filename</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJSONImportString">cupsJSONImportString</a></h3>
<p class="description">Load a JSON object from a string.</p>
<p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJSONImportString(const char *s);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJSONImportString(<span class="reserved">const</span> <span class="reserved">char</span> *s);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>s</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJSONImportURL">cupsJSONImportURL</a></h3>
<p class="description">Load a JSON object from a URL.</p>
<p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJSONImportURL(const char *url, time_t *last_modified);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJSONImportURL(<span class="reserved">const</span> <span class="reserved">char</span> *url, time_t *last_modified);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>url</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJSONNewKey">cupsJSONNewKey</a></h3>
<p class="description">Create a new JSON key node.</p>
<p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJSONNewKey(<a href="#cups_json_t">cups_json_t</a> *parent, <a href="#cups_json_t">cups_json_t</a> *after, const char *value);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJSONNewKey(<a href="#cups_json_t">cups_json_t</a> *parent, <a href="#cups_json_t">cups_json_t</a> *after, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>parent</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJSONNewNumber">cupsJSONNewNumber</a></h3>
<p class="description">Create a new JSON number node.</p>
<p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJSONNewNumber(<a href="#cups_json_t">cups_json_t</a> *parent, <a href="#cups_json_t">cups_json_t</a> *after, double value);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJSONNewNumber(<a href="#cups_json_t">cups_json_t</a> *parent, <a href="#cups_json_t">cups_json_t</a> *after, <span class="reserved">double</span> value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>parent</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJSONNewString">cupsJSONNewString</a></h3>
<p class="description">Create a new JSON string node.</p>
<p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJSONNewString(<a href="#cups_json_t">cups_json_t</a> *parent, <a href="#cups_json_t">cups_json_t</a> *after, const char *value);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJSONNewString(<a href="#cups_json_t">cups_json_t</a> *parent, <a href="#cups_json_t">cups_json_t</a> *after, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>parent</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTDelete">cupsJWTDelete</a></h3>
<p class="description">Free the memory used for a JSON Web Token.</p>
<p class="code">
-void cupsJWTDelete(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt);</p>
+<span class="reserved">void</span> cupsJWTDelete(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTExportString">cupsJWTExportString</a></h3>
<p class="description">Export a JWT with the JWS Compact or JWS JSON (Flattened) Serialization format.</p>
<p class="code">
-char *cupsJWTExportString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <a href="#cups_jws_format_t">cups_jws_format_t</a> format);</p>
+<span class="reserved">char</span> *cupsJWTExportString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <a href="#cups_jws_format_t">cups_jws_format_t</a> format);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTGetClaimNumber">cupsJWTGetClaimNumber</a></h3>
<p class="description">Get the number value of a claim.</p>
<p class="code">
-double cupsJWTGetClaimNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *claim);</p>
+<span class="reserved">double</span> cupsJWTGetClaimNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *claim);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTGetClaimString">cupsJWTGetClaimString</a></h3>
<p class="description">Get the string value of a claim.</p>
<p class="code">
-const char *cupsJWTGetClaimString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *claim);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsJWTGetClaimString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *claim);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTGetClaimType">cupsJWTGetClaimType</a></h3>
<p class="description">Get the value type of a claim.</p>
<p class="code">
-<a href="#cups_jtype_t">cups_jtype_t</a> cupsJWTGetClaimType(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *claim);</p>
+<a href="#cups_jtype_t">cups_jtype_t</a> cupsJWTGetClaimType(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *claim);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTGetClaimValue">cupsJWTGetClaimValue</a></h3>
<p class="description">Get the value node of a claim.</p>
<p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJWTGetClaimValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *claim);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJWTGetClaimValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *claim);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTGetHeaderNumber">cupsJWTGetHeaderNumber</a></h3>
<p class="description">Get the number value of a protected header.</p>
<p class="code">
-double cupsJWTGetHeaderNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *header);</p>
+<span class="reserved">double</span> cupsJWTGetHeaderNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *header);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTGetHeaderString">cupsJWTGetHeaderString</a></h3>
<p class="description">Get the string value of a protected header.</p>
<p class="code">
-const char *cupsJWTGetHeaderString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *header);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsJWTGetHeaderString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *header);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTGetHeaderType">cupsJWTGetHeaderType</a></h3>
<p class="description">Get the value type of a protected header.</p>
<p class="code">
-<a href="#cups_jtype_t">cups_jtype_t</a> cupsJWTGetHeaderType(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *header);</p>
+<a href="#cups_jtype_t">cups_jtype_t</a> cupsJWTGetHeaderType(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *header);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTGetHeaderValue">cupsJWTGetHeaderValue</a></h3>
<p class="description">Get the value node of a protected header.</p>
<p class="code">
-<a href="#cups_json_t">cups_json_t</a> *cupsJWTGetHeaderValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *header);</p>
+<a href="#cups_json_t">cups_json_t</a> *cupsJWTGetHeaderValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *header);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTHasValidSignature">cupsJWTHasValidSignature</a></h3>
<p class="description">Determine whether the JWT has a valid signature.</p>
<p class="code">
-bool cupsJWTHasValidSignature(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <a href="#cups_json_t">cups_json_t</a> *jwk);</p>
+<span class="reserved">bool</span> cupsJWTHasValidSignature(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <a href="#cups_json_t">cups_json_t</a> *jwk);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTImportString">cupsJWTImportString</a></h3>
<p class="description">Import a JSON Web Token or JSON Web Signature.</p>
<p class="code">
-<a href="#cups_jwt_t">cups_jwt_t</a> *cupsJWTImportString(const char *s, <a href="#cups_jws_format_t">cups_jws_format_t</a> format);</p>
+<a href="#cups_jwt_t">cups_jwt_t</a> *cupsJWTImportString(<span class="reserved">const</span> <span class="reserved">char</span> *s, <a href="#cups_jws_format_t">cups_jws_format_t</a> format);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>s</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTNew">cupsJWTNew</a></h3>
<p class="description">Create a new, empty JSON Web Token.</p>
<p class="code">
-<a href="#cups_jwt_t">cups_jwt_t</a> *cupsJWTNew(const char *type);</p>
+<a href="#cups_jwt_t">cups_jwt_t</a> *cupsJWTNew(<span class="reserved">const</span> <span class="reserved">char</span> *type);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>type</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTSetClaimNumber">cupsJWTSetClaimNumber</a></h3>
<p class="description">Set a claim number.</p>
<p class="code">
-void cupsJWTSetClaimNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *claim, double value);</p>
+<span class="reserved">void</span> cupsJWTSetClaimNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *claim, <span class="reserved">double</span> value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTSetClaimString">cupsJWTSetClaimString</a></h3>
<p class="description">Set a claim string.</p>
<p class="code">
-void cupsJWTSetClaimString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *claim, const char *value);</p>
+<span class="reserved">void</span> cupsJWTSetClaimString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *claim, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTSetClaimValue">cupsJWTSetClaimValue</a></h3>
<p class="description">Set a claim value.</p>
<p class="code">
-void cupsJWTSetClaimValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *claim, <a href="#cups_json_t">cups_json_t</a> *value);</p>
+<span class="reserved">void</span> cupsJWTSetClaimValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *claim, <a href="#cups_json_t">cups_json_t</a> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTSetHeaderNumber">cupsJWTSetHeaderNumber</a></h3>
<p class="description">Set a protected header number.</p>
<p class="code">
-void cupsJWTSetHeaderNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *header, double value);</p>
+<span class="reserved">void</span> cupsJWTSetHeaderNumber(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *header, <span class="reserved">double</span> value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTSetHeaderString">cupsJWTSetHeaderString</a></h3>
<p class="description">Set a protected header string.</p>
<p class="code">
-void cupsJWTSetHeaderString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *header, const char *value);</p>
+<span class="reserved">void</span> cupsJWTSetHeaderString(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *header, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTSetHeaderValue">cupsJWTSetHeaderValue</a></h3>
<p class="description">Set a protected header value.</p>
<p class="code">
-void cupsJWTSetHeaderValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, const char *header, <a href="#cups_json_t">cups_json_t</a> *value);</p>
+<span class="reserved">void</span> cupsJWTSetHeaderValue(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <span class="reserved">const</span> <span class="reserved">char</span> *header, <a href="#cups_json_t">cups_json_t</a> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsJWTSign">cupsJWTSign</a></h3>
<p class="description">Sign a JSON Web Token, creating a JSON Web Signature.</p>
<p class="code">
-bool cupsJWTSign(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <a href="#cups_jwa_t">cups_jwa_t</a> alg, <a href="#cups_json_t">cups_json_t</a> *jwk);</p>
+<span class="reserved">bool</span> cupsJWTSign(<a href="#cups_jwt_t">cups_jwt_t</a> *jwt, <a href="#cups_jwa_t">cups_jwa_t</a> alg, <a href="#cups_json_t">cups_json_t</a> *jwk);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>jwt</th>
<h3 class="function"><a id="cupsLangDefault">cupsLangDefault</a></h3>
<p class="description">Return the default language.</p>
<p class="code">
-<a href="#cups_lang_t">cups_lang_t</a> *cupsLangDefault(void);</p>
+<a href="#cups_lang_t">cups_lang_t</a> *cupsLangDefault(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Language data</p>
<h3 class="function"><a id="cupsLangEncoding">cupsLangEncoding</a></h3>
<p class="description">Return the character encoding (us-ascii, etc.)
for the given language.</p>
<p class="code">
-const char *cupsLangEncoding(<a href="#cups_lang_t">cups_lang_t</a> *lang);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsLangEncoding(<a href="#cups_lang_t">cups_lang_t</a> *lang);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>lang</th>
<h3 class="function"><a id="cupsLangFlush">cupsLangFlush</a></h3>
<p class="description">Flush all language data out of the cache.</p>
<p class="code">
-void cupsLangFlush(void);</p>
+<span class="reserved">void</span> cupsLangFlush(<span class="reserved">void</span>);</p>
<h3 class="function"><a id="cupsLangFree">cupsLangFree</a></h3>
<p class="description">Free language data.</p>
<p class="code">
-void cupsLangFree(<a href="#cups_lang_t">cups_lang_t</a> *lang);</p>
+<span class="reserved">void</span> cupsLangFree(<a href="#cups_lang_t">cups_lang_t</a> *lang);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>lang</th>
<h3 class="function"><a id="cupsLangGet">cupsLangGet</a></h3>
<p class="description">Get a language.</p>
<p class="code">
-<a href="#cups_lang_t">cups_lang_t</a> *cupsLangGet(const char *language);</p>
+<a href="#cups_lang_t">cups_lang_t</a> *cupsLangGet(<span class="reserved">const</span> <span class="reserved">char</span> *language);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>language</th>
<h3 class="function"><span class="info"> DEPRECATED </span><a id="cupsLastError">cupsLastError</a></h3>
<p class="description">Return the last IPP status code received on the current thread.</p>
<p class="code">
-ipp_status_t cupsLastError(void);</p>
+ipp_status_t cupsLastError(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">IPP status code from last request</p>
<h3 class="function"><span class="info"> DEPRECATED </span><a id="cupsLastErrorString">cupsLastErrorString</a></h3>
<p class="description">Return the last IPP status-message received on the current thread.</p>
<p class="code">
-const char *cupsLastErrorString(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsLastErrorString(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">status-message text from last request</p>
<h3 class="function"><span class="info"> CUPS 2.0/macOS 10.10 </span><a id="cupsLocalizeDestMedia">cupsLocalizeDestMedia</a></h3>
<p class="description">Get the localized string for a destination media
size.</p>
<p class="code">
-const char *cupsLocalizeDestMedia(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, unsigned flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsLocalizeDestMedia(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">unsigned</span> flags, <a href="#cups_size_t">cups_size_t</a> *size);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Localized string</p>
<h4 class="discussion">Discussion</h4>
-<p class="discussion">The returned string is stored in the destination information and will become
+<p class="discussion">This function returns the localized string for the specified media size
+information.<br>
+<br>
+The returned string is stored in the destination information and will become
+invalid if the destination information is deleted.
+
+</p>
+<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsLocalizeDestMedia2">cupsLocalizeDestMedia2</a></h3>
+<p class="description">Get the localized string for a destination media.</p>
+<p class="code">
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsLocalizeDestMedia2(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">unsigned</span> flags, <a href="#cups_media_t">cups_media_t</a> *media);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>http</th>
+<td class="description">Connection to destination</td></tr>
+<tr><th>dest</th>
+<td class="description">Destination</td></tr>
+<tr><th>dinfo</th>
+<td class="description">Destination information</td></tr>
+<tr><th>flags</th>
+<td class="description">Media flags</td></tr>
+<tr><th>media</th>
+<td class="description">Media</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Localized string</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function returns the localized string for the specified media
+information.<br>
+<br>
+The returned string is stored in the destination information and will become
invalid if the destination information is deleted.
</p>
<p class="description">Get the localized string for a destination
option.</p>
<p class="code">
-const char *cupsLocalizeDestOption(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, const char *option);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsLocalizeDestOption(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">const</span> <span class="reserved">char</span> *option);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<p class="description">Get the localized string for a destination
option+value pair.</p>
<p class="code">
-const char *cupsLocalizeDestValue(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, const char *option, const char *value);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsLocalizeDestValue(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *dinfo, <span class="reserved">const</span> <span class="reserved">char</span> *option, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><a id="cupsMutexDestroy">cupsMutexDestroy</a></h3>
<p class="description">Destroy a mutex.</p>
<p class="code">
-void cupsMutexDestroy(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
+<span class="reserved">void</span> cupsMutexDestroy(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>mutex</th>
<h3 class="function"><a id="cupsMutexInit">cupsMutexInit</a></h3>
<p class="description">Initialize a mutex.</p>
<p class="code">
-void cupsMutexInit(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
+<span class="reserved">void</span> cupsMutexInit(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>mutex</th>
<h3 class="function"><a id="cupsMutexLock">cupsMutexLock</a></h3>
<p class="description">Lock a mutex.</p>
<p class="code">
-void cupsMutexLock(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
+<span class="reserved">void</span> cupsMutexLock(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>mutex</th>
<h3 class="function"><a id="cupsMutexUnlock">cupsMutexUnlock</a></h3>
<p class="description">Unlock a mutex.</p>
<p class="code">
-void cupsMutexUnlock(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
+<span class="reserved">void</span> cupsMutexUnlock(<a href="#cups_mutex_t">cups_mutex_t</a> *mutex);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>mutex</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsNotifySubject">cupsNotifySubject</a></h3>
<p class="description">Return the subject for the given notification message.</p>
<p class="code">
-char *cupsNotifySubject(<a href="#cups_lang_t">cups_lang_t</a> *lang, <a href="#ipp_t">ipp_t</a> *event);</p>
+<span class="reserved">char</span> *cupsNotifySubject(<a href="#cups_lang_t">cups_lang_t</a> *lang, <a href="#ipp_t">ipp_t</a> *event);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>lang</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsNotifyText">cupsNotifyText</a></h3>
<p class="description">Return the text for the given notification message.</p>
<p class="code">
-char *cupsNotifyText(<a href="#cups_lang_t">cups_lang_t</a> *lang, <a href="#ipp_t">ipp_t</a> *event);</p>
+<span class="reserved">char</span> *cupsNotifyText(<a href="#cups_lang_t">cups_lang_t</a> *lang, <a href="#ipp_t">ipp_t</a> *event);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>lang</th>
<p class="discussion">The returned string must be freed by the caller using <code>free</code>.
</p>
+<h3 class="function"><a id="cupsOAuthClearTokens">cupsOAuthClearTokens</a></h3>
+<p class="description">Clear any cached authorization information.</p>
+<p class="code">
+<span class="reserved">void</span> cupsOAuthClearTokens(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <span class="reserved">const</span> <span class="reserved">char</span> *resource_uri);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization server URI</td></tr>
+<tr><th>resource_uri</th>
+<td class="description">Resource server URI</td></tr>
+</tbody></table>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function clears cached authorization information for the given
+Authorization Server "auth_uri" and Resource "resource_uri" combination.</p>
+<h3 class="function"><a id="cupsOAuthCopyAccessToken">cupsOAuthCopyAccessToken</a></h3>
+<p class="description">Get a cached access token.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsOAuthCopyAccessToken(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <span class="reserved">const</span> <span class="reserved">char</span> *resource_uri, time_t *access_expires);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>resource_uri</th>
+<td class="description">Resource URI</td></tr>
+<tr><th>access_expires</th>
+<td class="description">Access expiration time or <code>NULL</code> for don't care</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Access token</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function makes a copy of a cached access token and any
+associated expiration time for the given Authorization Server "auth_uri" and
+Resource "resource_uri" combination. The returned access token must be freed
+using the <code>free</code> function.<br>
+<br>
+<code>NULL</code> is returned if no token is cached.</p>
+<h3 class="function"><a id="cupsOAuthCopyClientId">cupsOAuthCopyClientId</a></h3>
+<p class="description">Get the cached <code>client_id</code> value.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsOAuthCopyClientId(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <span class="reserved">const</span> <span class="reserved">char</span> *redirect_uri);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>redirect_uri</th>
+<td class="description">Redirection URI</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description"><code>client_id</code> value</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function makes a copy of the cached <code>client_id</code> value for a given
+Authorization Server "auth_uri" and Redirection URI "resource_uri". The
+returned value must be freed using the <code>free</code> function.<br>
+<br>
+<code>NULL</code> is returned if no <code>client_id</code> is cached.</p>
+<h3 class="function"><a id="cupsOAuthCopyRefreshToken">cupsOAuthCopyRefreshToken</a></h3>
+<p class="description">Get a cached refresh token.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsOAuthCopyRefreshToken(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <span class="reserved">const</span> <span class="reserved">char</span> *resource_uri);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>resource_uri</th>
+<td class="description">Resource URI</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Refresh token</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function makes a copy of a cached refresh token for the given
+given Authorization Server "auth_uri" and Resource "resource_uri"
+combination. The returned refresh token must be freed using the <code>free</code>
+function.<br>
+<br>
+<code>NULL</code> is returned if no refresh token is cached.</p>
+<h3 class="function"><a id="cupsOAuthCopyUserId">cupsOAuthCopyUserId</a></h3>
+<p class="description">Get cached user identification information.</p>
+<p class="code">
+<a href="#cups_jwt_t">cups_jwt_t</a> *cupsOAuthCopyUserId(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <span class="reserved">const</span> <span class="reserved">char</span> *resource_uri);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>resource_uri</th>
+<td class="description">Resource URI</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Identification information</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function makes a copy of cached user identification information for the
+given Authorization Server "auth_uri" and Resource "resource_uri"
+combination. The returned user information must be freed using the
+<a href="#cupsJWTDelete"><code>cupsJWTDelete</code></a> function.<br>
+<br>
+<code>NULL</code> is returned if no identification information is cached.</p>
+<h3 class="function"><a id="cupsOAuthGetAuthorizationCode">cupsOAuthGetAuthorizationCode</a></h3>
+<p class="description">Authorize access using a web browser.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsOAuthGetAuthorizationCode(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <a href="#cups_json_t">cups_json_t</a> *metadata, <span class="reserved">const</span> <span class="reserved">char</span> *resource_uri, <span class="reserved">const</span> <span class="reserved">char</span> *scopes, <span class="reserved">const</span> <span class="reserved">char</span> *redirect_uri);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>metadata</th>
+<td class="description">Authorization Server metadata</td></tr>
+<tr><th>resource_uri</th>
+<td class="description">Resource URI</td></tr>
+<tr><th>scopes</th>
+<td class="description">Space-delimited scopes</td></tr>
+<tr><th>redirect_uri</th>
+<td class="description">Redirect URI or <code>NULL</code> for default</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Authorization code or <code>NULL</code> on error</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function performs a local/"native" OAuth authorization flow to obtain an
+authorization code for use with the <a href="#cupsOAuthGetTokens"><code>cupsOAuthGetTokens</code></a> function.<br>
+<br>
+The "auth_uri" parameter specifies the URI for the OAuth Authorization
+Server. The "metadata" parameter specifies the Authorization Server metadata
+as obtained using <a href="#cupsOAuthCopyMetadata"><code>cupsOAuthCopyMetadata</code></a> and/or
+<a href="#cupsOAuthGetMetadata"><code>cupsOAuthGetMetadata</code></a>.<br>
+<br>
+The "resource_uri" parameter specifies the URI for a resource (printer, web
+file, etc.) that you which to access.<br>
+<br>
+The "scopes" parameter specifies zero or more whitespace-delimited scope
+names to request during authorization. The list of supported scope names are
+available from the Authorization Server metadata, for example:<br>
+<br>
+The "redirect_uri" parameter specifies a 'http:' URL with a listen address,
+port, and path to use. If <code>NULL</code>, 127.0.0.1 on a random port is used with a
+path of "/".
+
+<pre>
+cups_json_t *metadata = cupsOAuthGetMetadata(auth_uri);
+cups_json_t *scopes_supported = cupsJSONFind(metadata, "scopes_supported");
+</pre>
+
+The returned authorization code must be freed using the <code>free</code> function.</p>
+<h3 class="function"><a id="cupsOAuthGetClientId">cupsOAuthGetClientId</a></h3>
+<p class="description">Register a client application and get its ID.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsOAuthGetClientId(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <a href="#cups_json_t">cups_json_t</a> *metadata, <span class="reserved">const</span> <span class="reserved">char</span> *redirect_uri, <span class="reserved">const</span> <span class="reserved">char</span> *logo_uri, <span class="reserved">const</span> <span class="reserved">char</span> *tos_uri);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>metadata</th>
+<td class="description">Authorization Server metadata</td></tr>
+<tr><th>redirect_uri</th>
+<td class="description">Redirection URL</td></tr>
+<tr><th>logo_uri</th>
+<td class="description">Logo URL or <code>NULL</code> for none</td></tr>
+<tr><th>tos_uri</th>
+<td class="description">Terms-of-service URL or <code>NULL</code> for none</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description"><code>client_id</code> string or <code>NULL</code> on error</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function registers a client application with the specified OAuth
+Authorization Server.<br>
+<br>
+The "auth_uri" parameter specifies the URI for the OAuth Authorization
+Server. The "metadata" parameter specifies the Authorization Server metadata
+as obtained using <a href="#cupsOAuthCopyMetadata"><code>cupsOAuthCopyMetadata</code></a> and/or
+<a href="#cupsOAuthGetMetadata"><code>cupsOAuthGetMetadata</code></a>.<br>
+<br>
+The "redirect_uri" argument specifies the URL to use for providing
+authorization results to a WWW application.<br>
+<br>
+The "logo_uri" argument specifies a public URL for the logo of your
+application, while the "tos_uri" specifies a public URL for the terms of
+service for your application.<br>
+<br>
+The returned "client_id" string must be freed using the <code>free</code> function.<br>
+<br>
+<em>Note</em>: This function should only be used to register WWW applications. The
+<a href="#cupsOAuthGetAuthorizationCode"><code>cupsOAuthGetAuthorizationCode</code></a> function handles registration of
+local/"native" applications for you.</p>
+<h3 class="function"><a id="cupsOAuthGetMetadata">cupsOAuthGetMetadata</a></h3>
+<p class="description">Get the metadata for an Authorization Server.</p>
+<p class="code">
+<a href="#cups_json_t">cups_json_t</a> *cupsOAuthGetMetadata(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">JSON metadata or <code>NULL</code> on error</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function gets the metadata for the specified Authorization Server URI
+"auth_uri". Metadata is cached per-user for better performance.<br>
+<br>
+The returned metadata must be freed using the <a href="#cupsJSONDelete"><code>cupsJSONDelete</code></a> function.</p>
+<h3 class="function"><a id="cupsOAuthGetTokens">cupsOAuthGetTokens</a></h3>
+<p class="description">Obtain access and refresh tokens.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsOAuthGetTokens(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <a href="#cups_json_t">cups_json_t</a> *metadata, <span class="reserved">const</span> <span class="reserved">char</span> *resource_uri, <span class="reserved">const</span> <span class="reserved">char</span> *grant_code, <a href="#cups_ogrant_t">cups_ogrant_t</a> grant_type, <span class="reserved">const</span> <span class="reserved">char</span> *redirect_uri, time_t *access_expires);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>metadata</th>
+<td class="description">Authorization Server metadata</td></tr>
+<tr><th>resource_uri</th>
+<td class="description">Resource URI</td></tr>
+<tr><th>grant_code</th>
+<td class="description">Authorization code or refresh token</td></tr>
+<tr><th>grant_type</th>
+<td class="description">Grant code type</td></tr>
+<tr><th>redirect_uri</th>
+<td class="description">Redirect URI</td></tr>
+<tr><th>access_expires</th>
+<td class="description">Expiration time for access token</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Access token or <code>NULL</code> on error</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function obtains a access and refresh tokens from an OAuth Authorization
+Server. OpenID Authorization Servers also provide user identification
+information.<br>
+<br>
+The "auth_uri" parameter specifies the URI for the OAuth Authorization
+Server. The "metadata" parameter specifies the Authorization Server metadata
+as obtained using <a href="#cupsOAuthCopyMetadata"><code>cupsOAuthCopyMetadata</code></a> and/or
+<a href="#cupsOAuthGetMetadata"><code>cupsOAuthGetMetadata</code></a>.<br>
+<br>
+The "resource_uri" parameter specifies the URI for a resource (printer, web
+file, etc.) that you which to access.<br>
+<br>
+The "grant_code" parameter specifies the code or token to use while the
+"grant_type" parameter specifies the type of code:
+
+</p><ul>
+<li><code>CUPS_OGRANT_AUTHORIZATION_CODE</code>: A user authorization grant code.
+</li>
+<li><code>CUPS_OGRANT_DEVICE_CODE</code>: A device authorization grant code.
+</li>
+<li><code>CUPS_OGRANT_REFRESH_TOKEN</code>: A refresh token.</li>
+</ul>
+<p class="discussion">The "redirect_uri" specifies the redirection URI used to obtain the code. The
+constant <code>CUPS_OAUTH_REDIRECT_URI</code> should be used for codes obtained using
+the <a href="#cupsOAuthGetAuthorizationCode"><code>cupsOAuthGetAuthorizationCode</code></a> function.<br>
+<br>
+When successful, the access token and expiration time are returned. The
+access token must be freed using the <code>free</code> function. The new refresh token
+and any user ID information can be obtained using the
+<a href="#cupsOAuthCopyRefreshToken"><code>cupsOAuthCopyRefreshToken</code></a> and <a href="#cupsOAuthCopyUserId"><code>cupsOAuthCopyUserId</code></a> functions
+respectively.</p>
+<h3 class="function"><a id="cupsOAuthMakeAuthorizationURL">cupsOAuthMakeAuthorizationURL</a></h3>
+<p class="description">Make an authorization URL.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsOAuthMakeAuthorizationURL(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <a href="#cups_json_t">cups_json_t</a> *metadata, <span class="reserved">const</span> <span class="reserved">char</span> *resource_uri, <span class="reserved">const</span> <span class="reserved">char</span> *scopes, <span class="reserved">const</span> <span class="reserved">char</span> *client_id, <span class="reserved">const</span> <span class="reserved">char</span> *code_verifier, <span class="reserved">const</span> <span class="reserved">char</span> *nonce, <span class="reserved">const</span> <span class="reserved">char</span> *redirect_uri, <span class="reserved">const</span> <span class="reserved">char</span> *state);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>metadata</th>
+<td class="description">Authorization Server metadata</td></tr>
+<tr><th>resource_uri</th>
+<td class="description">Resource URI</td></tr>
+<tr><th>scopes</th>
+<td class="description">Space-delimited scope(s)</td></tr>
+<tr><th>client_id</th>
+<td class="description">Client ID</td></tr>
+<tr><th>code_verifier</th>
+<td class="description">Code verifier string</td></tr>
+<tr><th>nonce</th>
+<td class="description">Nonce</td></tr>
+<tr><th>redirect_uri</th>
+<td class="description">Redirection URI</td></tr>
+<tr><th>state</th>
+<td class="description">State</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Authorization URL</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function makes an authorization URL for the specified authorization
+server and resource.<br>
+<br>
+The "auth_uri" parameter specifies the URI for the OAuth Authorization
+Server. The "metadata" parameter specifies the Authorization Server metadata
+as obtained using <a href="#cupsOAuthCopyMetadata"><code>cupsOAuthCopyMetadata</code></a> and/or
+<a href="#cupsOAuthGetMetadata"><code>cupsOAuthGetMetadata</code></a>.<br>
+<br>
+The "resource_uri" parameter specifies the URI for a resource (printer, web
+file, etc.) that you which to access.<br>
+<br>
+The "scopes" parameter specifies zero or more whitespace-delimited scope
+names to request during authorization. The list of supported scope names are
+available from the Authorization Server metadata, for example:
+
+<pre>
+cups_json_t *metadata = cupsOAuthGetMetadata(auth_uri);
+cups_json_t *scopes_supported = cupsJSONFind(metadata, "scopes_supported");
+</pre>
+
+The "client_id" parameter specifies the client identifier obtained using
+<a href="#cupsOAuthCopyClientId"><code>cupsOAuthCopyClientId</code></a> and/or <a href="#cupsOAuthGetClientId"><code>cupsOAuthGetClientId</code></a>.<br>
+<br>
+The "client_id" parameter is the string returned by
+<a href="#cupsOAuthCopyClientId"><code>cupsOAuthCopyClientId</code></a> or <a href="#cupsOAuthGetClientId"><code>cupsOAuthGetClientId</code></a>.<br>
+<br>
+The "code_verifier" parameter specifies a random Base64URL-encoded string
+that is used by the Proof Key for Code Exchange [RFC7636] extension to help
+secure the authorization flow. The <a href="#cupsOAuthMakeBase64Random"><code>cupsOAuthMakeBase64Random</code></a> function
+can be used to generate this string.<br>
+<br>
+The "nonce" parameter specifies a random Base64URL-encoded string that is
+used by OpenID to validate the ID token. The <a href="#cupsOAuthMakeBase64Random"><code>cupsOAuthMakeBase64Random</code></a>
+function can be used to generate this string.<br>
+<br>
+The "redirect_uri" parameter specifies the URI that will receive the
+authorization grant code.<br>
+<br>
+The "state" parameter is a unique (random) identifier for the authorization
+request. It is provided to the redirection URI as a form parameter.</p>
+<h3 class="function"><a id="cupsOAuthMakeBase64Random">cupsOAuthMakeBase64Random</a></h3>
+<p class="description">Make a random data string.</p>
+<p class="code">
+<span class="reserved">char</span> *cupsOAuthMakeBase64Random(size_t len);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>len</th>
+<td class="description">Number of bytes</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Random string</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function creates a string containing random data that has been Base64URL
+encoded. "len" specifies the number of random bytes to include in the string.
+The returned string must be freed using the <code>free</code> function.</p>
+<h3 class="function"><a id="cupsOAuthSaveClientData">cupsOAuthSaveClientData</a></h3>
+<p class="description">Save client_id and client_secret values.</p>
+<p class="code">
+<span class="reserved">void</span> cupsOAuthSaveClientData(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <span class="reserved">const</span> <span class="reserved">char</span> *redirect_uri, <span class="reserved">const</span> <span class="reserved">char</span> *client_id, <span class="reserved">const</span> <span class="reserved">char</span> *client_secret);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>redirect_uri</th>
+<td class="description">Redirection URI</td></tr>
+<tr><th>client_id</th>
+<td class="description">client_id or <code>NULL</code> to delete</td></tr>
+<tr><th>client_secret</th>
+<td class="description">client_secret value or <code>NULL</code> for none</td></tr>
+</tbody></table>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function saves the "client_id" and "client_secret" values for the given
+Authorization Server "auth_uri" and redirection URI "redirect_uri". If the
+"client_id" is <code>NULL</code> then any saved values are deleted from the per-user
+store.</p>
+<h3 class="function"><a id="cupsOAuthSaveTokens">cupsOAuthSaveTokens</a></h3>
+<p class="description">Save authorization and refresh tokens.</p>
+<p class="code">
+<span class="reserved">void</span> cupsOAuthSaveTokens(<span class="reserved">const</span> <span class="reserved">char</span> *auth_uri, <span class="reserved">const</span> <span class="reserved">char</span> *resource_uri, <span class="reserved">const</span> <span class="reserved">char</span> *access_token, time_t access_expires, <span class="reserved">const</span> <span class="reserved">char</span> *user_id, <span class="reserved">const</span> <span class="reserved">char</span> *refresh_token);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>auth_uri</th>
+<td class="description">Authorization Server URI</td></tr>
+<tr><th>resource_uri</th>
+<td class="description">Resource URI</td></tr>
+<tr><th>access_token</th>
+<td class="description">Access token or <code>NULL</code> to delete</td></tr>
+<tr><th>access_expires</th>
+<td class="description">Access expiration time</td></tr>
+<tr><th>user_id</th>
+<td class="description">User ID or <code>NULL</code> to delete</td></tr>
+<tr><th>refresh_token</th>
+<td class="description">Refresh token or <code>NULL</code> to delete</td></tr>
+</tbody></table>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function saves the access token "access_token", user ID "user_id", and
+refresh token "refresh_token" values for the given Authorization Server
+"auth_uri" and resource "resource_uri". Specifying <code>NULL</code> for any of the
+values will delete the corresponding saved values from the per-user store.</p>
<h3 class="function"><a id="cupsParseOptions">cupsParseOptions</a></h3>
<p class="description">Parse options from a command-line argument.</p>
<p class="code">
-int cupsParseOptions(const char *arg, int num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
+<span class="reserved">int</span> cupsParseOptions(<span class="reserved">const</span> <span class="reserved">char</span> *arg, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>arg</th>
("name={a=... b=... c=...}") are stored with the curley brackets
intact - use <code>cupsParseOptions</code> on the value to extract the
collection attributes.</p>
+<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsParseOptions2">cupsParseOptions2</a></h3>
+<p class="description">Parse options from a command-line argument.</p>
+<p class="code">
+<span class="reserved">int</span> cupsParseOptions2(<span class="reserved">const</span> <span class="reserved">char</span> *arg, <span class="reserved">const</span> <span class="reserved">char</span> **end, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>arg</th>
+<td class="description">Argument to parse</td></tr>
+<tr><th>end</th>
+<td class="description">Pointer to end of options or <code>NULL</code> for "don't care"</td></tr>
+<tr><th>num_options</th>
+<td class="description">Number of options</td></tr>
+<tr><th>options</th>
+<td class="description">Options found</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">Number of options found</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function converts space-delimited name/value pairs according
+to the PAPI text option ABNF specification. Collection values
+("name={a=... b=... c=...}") are stored with the curley brackets
+intact - use <code>cupsParseOptions</code> on the value to extract the
+collection attributes.<br>
+<br>
+The "end" argument, if not <code>NULL</code>, receives a pointer to the end of the
+options.
+
+</p>
<h3 class="function"><span class="info"> CUPS 1.1.20/macOS 10.4 </span><a id="cupsPutFd">cupsPutFd</a></h3>
<p class="description">Put a file on the server.</p>
<p class="code">
-http_status_t cupsPutFd(<a href="#http_t">http_t</a> *http, const char *resource, int fd);</p>
+http_status_t cupsPutFd(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *resource, <span class="reserved">int</span> fd);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.1.20/macOS 10.4 </span><a id="cupsPutFile">cupsPutFile</a></h3>
<p class="description">Put a file on the server.</p>
<p class="code">
-http_status_t cupsPutFile(<a href="#http_t">http_t</a> *http, const char *resource, const char *filename);</p>
+http_status_t cupsPutFile(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *resource, <span class="reserved">const</span> <span class="reserved">char</span> *filename);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><a id="cupsRWDestroy">cupsRWDestroy</a></h3>
<p class="description">Destroy a reader/writer lock.</p>
<p class="code">
-void cupsRWDestroy(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
+<span class="reserved">void</span> cupsRWDestroy(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>rwlock</th>
<h3 class="function"><a id="cupsRWInit">cupsRWInit</a></h3>
<p class="description">Initialize a reader/writer lock.</p>
<p class="code">
-void cupsRWInit(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
+<span class="reserved">void</span> cupsRWInit(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>rwlock</th>
<h3 class="function"><a id="cupsRWLockRead">cupsRWLockRead</a></h3>
<p class="description">Acquire a reader/writer lock for reading.</p>
<p class="code">
-void cupsRWLockRead(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
+<span class="reserved">void</span> cupsRWLockRead(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>rwlock</th>
<h3 class="function"><a id="cupsRWLockWrite">cupsRWLockWrite</a></h3>
<p class="description">Acquire a reader/writer lock for writing.</p>
<p class="code">
-void cupsRWLockWrite(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
+<span class="reserved">void</span> cupsRWLockWrite(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>rwlock</th>
<h3 class="function"><a id="cupsRWUnlock">cupsRWUnlock</a></h3>
<p class="description">Release a reader/writer lock.</p>
<p class="code">
-void cupsRWUnlock(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
+<span class="reserved">void</span> cupsRWUnlock(<a href="#cups_rwlock_t">cups_rwlock_t</a> *rwlock);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>rwlock</th>
<h3 class="function"><a id="cupsRasterClose">cupsRasterClose</a></h3>
<p class="description">Close a raster stream.</p>
<p class="code">
-void cupsRasterClose(<a href="#cups_raster_t">cups_raster_t</a> *r);</p>
+<span class="reserved">void</span> cupsRasterClose(<a href="#cups_raster_t">cups_raster_t</a> *r);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>r</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsRasterGetErrorString">cupsRasterGetErrorString</a></h3>
<p class="description">Return the last error from a raster function.</p>
<p class="code">
-const char *cupsRasterGetErrorString(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsRasterGetErrorString(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Last error</p>
<h4 class="discussion">Discussion</h4>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsRasterInitHeader">cupsRasterInitHeader</a></h3>
<p class="description">Initialize a page header for PWG Raster output.</p>
<p class="code">
-bool cupsRasterInitHeader(<a href="#cups_page_header2_t">cups_page_header2_t</a> *h, <a href="#cups_media_t">cups_media_t</a> *media, const char *optimize, <a href="#ipp_quality_t">ipp_quality_t</a> quality, const char *intent, <a href="#ipp_orient_t">ipp_orient_t</a> orientation, const char *sides, const char *type, int xdpi, int ydpi, const char *sheet_back);</p>
+<span class="reserved">bool</span> cupsRasterInitHeader(<a href="#cups_page_header2_t">cups_page_header2_t</a> *h, <a href="#cups_media_t">cups_media_t</a> *media, <span class="reserved">const</span> <span class="reserved">char</span> *optimize, <a href="#ipp_quality_t">ipp_quality_t</a> quality, <span class="reserved">const</span> <span class="reserved">char</span> *intent, <a href="#ipp_orient_t">ipp_orient_t</a> orientation, <span class="reserved">const</span> <span class="reserved">char</span> *sides, <span class="reserved">const</span> <span class="reserved">char</span> *type, <span class="reserved">int</span> xdpi, <span class="reserved">int</span> ydpi, <span class="reserved">const</span> <span class="reserved">char</span> *sheet_back);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>h</th>
<h3 class="function"><a id="cupsRasterOpen">cupsRasterOpen</a></h3>
<p class="description">Open a raster stream using a file descriptor.</p>
<p class="code">
-<a href="#cups_raster_t">cups_raster_t</a> *cupsRasterOpen(int fd, cups_mode_t mode);</p>
+<a href="#cups_raster_t">cups_raster_t</a> *cupsRasterOpen(<span class="reserved">int</span> fd, cups_mode_t mode);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fd</th>
<h3 class="function"><a id="cupsRasterOpenIO">cupsRasterOpenIO</a></h3>
<p class="description">Open a raster stream using a callback function.</p>
<p class="code">
-<a href="#cups_raster_t">cups_raster_t</a> *cupsRasterOpenIO(<a href="#cups_raster_cb_t">cups_raster_cb_t</a> iocb, void *ctx, <a href="#cups_raster_mode_t">cups_raster_mode_t</a> mode);</p>
+<a href="#cups_raster_t">cups_raster_t</a> *cupsRasterOpenIO(<a href="#cups_raster_cb_t">cups_raster_cb_t</a> iocb, <span class="reserved">void</span> *ctx, <a href="#cups_raster_mode_t">cups_raster_mode_t</a> mode);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>iocb</th>
<p class="description">Read a raster page header and store it in a
version 1 page header structure.</p>
<p class="code">
-unsigned cupsRasterReadHeader(<a href="#cups_raster_t">cups_raster_t</a> *r, <a href="#cups_page_header_t">cups_page_header_t</a> *h);</p>
+<span class="reserved">unsigned</span> cupsRasterReadHeader(<a href="#cups_raster_t">cups_raster_t</a> *r, <a href="#cups_page_header_t">cups_page_header_t</a> *h);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>r</th>
<p class="description">Read a raster page header and store it in a
version 2 page header structure.</p>
<p class="code">
-unsigned cupsRasterReadHeader2(<a href="#cups_raster_t">cups_raster_t</a> *r, <a href="#cups_page_header2_t">cups_page_header2_t</a> *h);</p>
+<span class="reserved">unsigned</span> cupsRasterReadHeader2(<a href="#cups_raster_t">cups_raster_t</a> *r, <a href="#cups_page_header2_t">cups_page_header2_t</a> *h);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>r</th>
<h3 class="function"><a id="cupsRasterReadPixels">cupsRasterReadPixels</a></h3>
<p class="description">Read raster pixels.</p>
<p class="code">
-unsigned cupsRasterReadPixels(<a href="#cups_raster_t">cups_raster_t</a> *r, unsigned char *p, unsigned len);</p>
+<span class="reserved">unsigned</span> cupsRasterReadPixels(<a href="#cups_raster_t">cups_raster_t</a> *r, <span class="reserved">unsigned</span> <span class="reserved">char</span> *p, <span class="reserved">unsigned</span> len);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>r</th>
<p class="description">Write a raster page header from a version 1 page
header structure.</p>
<p class="code">
-unsigned cupsRasterWriteHeader(<a href="#cups_raster_t">cups_raster_t</a> *r, <a href="#cups_page_header_t">cups_page_header_t</a> *h);</p>
+<span class="reserved">unsigned</span> cupsRasterWriteHeader(<a href="#cups_raster_t">cups_raster_t</a> *r, <a href="#cups_page_header_t">cups_page_header_t</a> *h);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>r</th>
<p class="description">Write a raster page header from a version 2
page header structure.</p>
<p class="code">
-unsigned cupsRasterWriteHeader2(<a href="#cups_raster_t">cups_raster_t</a> *r, <a href="#cups_page_header2_t">cups_page_header2_t</a> *h);</p>
+<span class="reserved">unsigned</span> cupsRasterWriteHeader2(<a href="#cups_raster_t">cups_raster_t</a> *r, <a href="#cups_page_header2_t">cups_page_header2_t</a> *h);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>r</th>
<h3 class="function"><a id="cupsRasterWritePixels">cupsRasterWritePixels</a></h3>
<p class="description">Write raster pixels.</p>
<p class="code">
-unsigned cupsRasterWritePixels(<a href="#cups_raster_t">cups_raster_t</a> *r, unsigned char *p, unsigned len);</p>
+<span class="reserved">unsigned</span> cupsRasterWritePixels(<a href="#cups_raster_t">cups_raster_t</a> *r, <span class="reserved">unsigned</span> <span class="reserved">char</span> *p, <span class="reserved">unsigned</span> len);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>r</th>
<h3 class="function"><span class="info"> CUPS 1.4/macOS 10.6 </span><a id="cupsReadResponseData">cupsReadResponseData</a></h3>
<p class="description">Read additional data after the IPP response.</p>
<p class="code">
-ssize_t cupsReadResponseData(<a href="#http_t">http_t</a> *http, char *buffer, size_t length);</p>
+ssize_t cupsReadResponseData(<a href="#http_t">http_t</a> *http, <span class="reserved">char</span> *buffer, size_t length);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.3/macOS 10.5 </span><a id="cupsRemoveDest">cupsRemoveDest</a></h3>
<p class="description">Remove a destination from the destination list.</p>
<p class="code">
-int cupsRemoveDest(const char *name, const char *instance, int num_dests, <a href="#cups_dest_t">cups_dest_t</a> **dests);</p>
+<span class="reserved">int</span> cupsRemoveDest(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *instance, <span class="reserved">int</span> num_dests, <a href="#cups_dest_t">cups_dest_t</a> **dests);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>name</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cupsRemoveOption">cupsRemoveOption</a></h3>
<p class="description">Remove an option from an option array.</p>
<p class="code">
-int cupsRemoveOption(const char *name, int num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
+<span class="reserved">int</span> cupsRemoveOption(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> **options);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>name</th>
<h3 class="function"><a id="cupsSaveCredentials">cupsSaveCredentials</a></h3>
<p class="description">Save the credentials associated with a printer/server.</p>
<p class="code">
-bool cupsSaveCredentials(const char *path, const char *common_name, const char *credentials, const char *key);</p>
+<span class="reserved">bool</span> cupsSaveCredentials(<span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">const</span> <span class="reserved">char</span> *common_name, <span class="reserved">const</span> <span class="reserved">char</span> *credentials, <span class="reserved">const</span> <span class="reserved">char</span> *key);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>path</th>
<tr><th>common_name</th>
<td class="description">Common name for certificate</td></tr>
<tr><th>credentials</th>
-<td class="description">PEM-encoded certificate chain</td></tr>
+<td class="description">PEM-encoded certificate chain or <code>NULL</code> to remove</td></tr>
<tr><th>key</th>
<td class="description">PEM-encoded private key or <code>NULL</code> for none</td></tr>
</tbody></table>
<h3 class="function"><span class="info"> CUPS 1.4/macOS 10.6 </span><a id="cupsSendRequest">cupsSendRequest</a></h3>
<p class="description">Send an IPP request.</p>
<p class="code">
-http_status_t cupsSendRequest(<a href="#http_t">http_t</a> *http, <a href="#ipp_t">ipp_t</a> *request, const char *resource, size_t length);</p>
+http_status_t cupsSendRequest(<a href="#http_t">http_t</a> *http, <a href="#ipp_t">ipp_t</a> *request, <span class="reserved">const</span> <span class="reserved">char</span> *resource, size_t length);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> DEPRECATED </span><a id="cupsServer">cupsServer</a></h3>
<p class="description">Return the hostname/address of the current server.</p>
<p class="code">
-const char *cupsServer(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsServer(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Server name</p>
<h4 class="discussion">Discussion</h4>
<h3 class="function"><span class="info"> DEPRECATED </span><a id="cupsSetClientCertCB">cupsSetClientCertCB</a></h3>
<p class="description">Set the client certificate callback.</p>
<p class="code">
-void cupsSetClientCertCB(<a href="#cups_client_cert_cb_t">cups_client_cert_cb_t</a> cb, void *user_data);</p>
+<span class="reserved">void</span> cupsSetClientCertCB(<a href="#cups_client_cert_cb_t">cups_client_cert_cb_t</a> cb, <span class="reserved">void</span> *user_data);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>cb</th>
in a program. Multi-threaded programs that override the callback need to do
so in each thread for the same callback to be used.
+</p>
+<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="cupsSetClientCredentials">cupsSetClientCredentials</a></h3>
+<p class="description">Set the default credentials to be used for TLS connections.</p>
+<p class="code">
+<span class="reserved">bool</span> cupsSetClientCredentials(<span class="reserved">const</span> <span class="reserved">char</span> *credentials, <span class="reserved">const</span> <span class="reserved">char</span> *key);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>credentials</th>
+<td class="description">PEM-encoded X.509 credentials string</td></tr>
+<tr><th>key</th>
+<td class="description">PEM-encoded private key</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description"><code>true</code> on success, <code>false</code> on failure</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">Note: The default credentials are tracked separately for each thread in a
+program. Multi-threaded programs that override the setting need to do so in
+each thread for the same setting to be used.
+
</p>
<h3 class="function"><span class="info"> DEPRECATED </span><a id="cupsSetCredentials">cupsSetCredentials</a></h3>
<p class="description">Set the default credentials to be used for SSL/TLS
connections.</p>
<p class="code">
-int cupsSetCredentials(<a href="#cups_array_t">cups_array_t</a> *credentials);</p>
+<span class="reserved">int</span> cupsSetCredentials(<a href="#cups_array_t">cups_array_t</a> *credentials);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>credentials</th>
<h3 class="function"><span class="info"> CUPS 1.3/macOS 10.5 </span><a id="cupsSetDefaultDest">cupsSetDefaultDest</a></h3>
<p class="description">Set the default destination.</p>
<p class="code">
-void cupsSetDefaultDest(const char *name, const char *instance, int num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests);</p>
+<span class="reserved">void</span> cupsSetDefaultDest(<span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *instance, <span class="reserved">int</span> num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>name</th>
<h3 class="function"><span class="info"> CUPS 1.1.21/macOS 10.4 </span><a id="cupsSetDests2">cupsSetDests2</a></h3>
<p class="description">Save the list of destinations for the specified server.</p>
<p class="code">
-int cupsSetDests2(<a href="#http_t">http_t</a> *http, int num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests);</p>
+<span class="reserved">int</span> cupsSetDests2(<a href="#http_t">http_t</a> *http, <span class="reserved">int</span> num_dests, <a href="#cups_dest_t">cups_dest_t</a> *dests);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><a id="cupsSetEncryption">cupsSetEncryption</a></h3>
<p class="description">Set the encryption preference.</p>
<p class="code">
-void cupsSetEncryption(<a href="#http_encryption_t">http_encryption_t</a> e);</p>
+<span class="reserved">void</span> cupsSetEncryption(<a href="#http_encryption_t">http_encryption_t</a> e);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>e</th>
<h3 class="function"><span class="info"> CUPS 2.4 </span><a id="cupsSetOAuthCB">cupsSetOAuthCB</a></h3>
<p class="description">Set the OAuth 2.0 callback for CUPS.</p>
<p class="code">
-void cupsSetOAuthCB(<a href="#cups_oauth_cb_t">cups_oauth_cb_t</a> cb, void *user_data);</p>
+<span class="reserved">void</span> cupsSetOAuthCB(<a href="#cups_oauth_cb_t">cups_oauth_cb_t</a> cb, <span class="reserved">void</span> *user_data);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>cb</th>
<h3 class="function"><span class="info"> CUPS 1.4/macOS 10.6 </span><a id="cupsSetPasswordCB2">cupsSetPasswordCB2</a></h3>
<p class="description">Set the advanced password callback for CUPS.</p>
<p class="code">
-void cupsSetPasswordCB2(<a href="#cups_password_cb2_t">cups_password_cb2_t</a> cb, void *user_data);</p>
+<span class="reserved">void</span> cupsSetPasswordCB2(<a href="#cups_password_cb2_t">cups_password_cb2_t</a> cb, <span class="reserved">void</span> *user_data);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>cb</th>
<h3 class="function"><a id="cupsSetServer">cupsSetServer</a></h3>
<p class="description">Set the default server name and port.</p>
<p class="code">
-void cupsSetServer(const char *server);</p>
+<span class="reserved">void</span> cupsSetServer(<span class="reserved">const</span> <span class="reserved">char</span> *server);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>server</th>
<h3 class="function"><span class="info"> DEPRECATED </span><a id="cupsSetServerCertCB">cupsSetServerCertCB</a></h3>
<p class="description">Set the server certificate callback.</p>
<p class="code">
-void cupsSetServerCertCB(<a href="#cups_server_cert_cb_t">cups_server_cert_cb_t</a> cb, void *user_data);</p>
+<span class="reserved">void</span> cupsSetServerCertCB(<a href="#cups_server_cert_cb_t">cups_server_cert_cb_t</a> cb, <span class="reserved">void</span> *user_data);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>cb</th>
<h3 class="function"><a id="cupsSetServerCredentials">cupsSetServerCredentials</a></h3>
<p class="description">Set the default server credentials.</p>
<p class="code">
-int cupsSetServerCredentials(const char *path, const char *common_name, int auto_create);</p>
+<span class="reserved">int</span> cupsSetServerCredentials(<span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">const</span> <span class="reserved">char</span> *common_name, <span class="reserved">int</span> auto_create);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>path</th>
<h3 class="function"><a id="cupsSetUser">cupsSetUser</a></h3>
<p class="description">Set the default user name.</p>
<p class="code">
-void cupsSetUser(const char *user);</p>
+<span class="reserved">void</span> cupsSetUser(<span class="reserved">const</span> <span class="reserved">char</span> *user);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>user</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="cupsSetUserAgent">cupsSetUserAgent</a></h3>
<p class="description">Set the default HTTP User-Agent string.</p>
<p class="code">
-void cupsSetUserAgent(const char *user_agent);</p>
+<span class="reserved">void</span> cupsSetUserAgent(<span class="reserved">const</span> <span class="reserved">char</span> *user_agent);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>user_agent</th>
<h3 class="function"><a id="cupsSignCredentialsRequest">cupsSignCredentialsRequest</a></h3>
<p class="description">Sign an X.509 certificate signing request to produce an X.509 certificate chain.</p>
<p class="code">
-bool cupsSignCredentialsRequest(const char *path, const char *common_name, const char *request, const char *root_name, <a href="#cups_credpurpose_t">cups_credpurpose_t</a> allowed_purpose, <a href="#cups_credusage_t">cups_credusage_t</a> allowed_usage, <a href="#cups_cert_san_cb_t">cups_cert_san_cb_t</a> cb, void *cb_data, time_t expiration_date);</p>
+<span class="reserved">bool</span> cupsSignCredentialsRequest(<span class="reserved">const</span> <span class="reserved">char</span> *path, <span class="reserved">const</span> <span class="reserved">char</span> *common_name, <span class="reserved">const</span> <span class="reserved">char</span> *request, <span class="reserved">const</span> <span class="reserved">char</span> *root_name, <a href="#cups_credpurpose_t">cups_credpurpose_t</a> allowed_purpose, <a href="#cups_credusage_t">cups_credusage_t</a> allowed_usage, <a href="#cups_cert_san_cb_t">cups_cert_san_cb_t</a> cb, <span class="reserved">void</span> *cb_data, time_t expiration_date);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>path</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="cupsStartDestDocument">cupsStartDestDocument</a></h3>
<p class="description">Start a new document.</p>
<p class="code">
-http_status_t cupsStartDestDocument(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *info, int job_id, const char *docname, const char *format, int num_options, <a href="#cups_option_t">cups_option_t</a> *options, int last_document);</p>
+http_status_t cupsStartDestDocument(<a href="#http_t">http_t</a> *http, <a href="#cups_dest_t">cups_dest_t</a> *dest, <a href="#cups_dinfo_t">cups_dinfo_t</a> *info, <span class="reserved">int</span> job_id, <span class="reserved">const</span> <span class="reserved">char</span> *docname, <span class="reserved">const</span> <span class="reserved">char</span> *format, <span class="reserved">int</span> num_options, <a href="#cups_option_t">cups_option_t</a> *options, <span class="reserved">int</span> last_document);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> DEPRECATED </span><a id="cupsTempFd">cupsTempFd</a></h3>
<p class="description">Create a temporary file descriptor.</p>
<p class="code">
-int cupsTempFd(char *filename, int len);</p>
+<span class="reserved">int</span> cupsTempFd(<span class="reserved">char</span> *filename, <span class="reserved">int</span> len);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>filename</th>
<h3 class="function"><span class="info"> DEPRECATED </span><a id="cupsTempFile">cupsTempFile</a></h3>
<p class="description">Generate a temporary filename (deprecated).</p>
<p class="code">
-char *cupsTempFile(char *filename, int len);</p>
+<span class="reserved">char</span> *cupsTempFile(<span class="reserved">char</span> *filename, <span class="reserved">int</span> len);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>filename</th>
<h3 class="function"><span class="info"> DEPRECATED </span><a id="cupsTempFile2">cupsTempFile2</a></h3>
<p class="description">Creates a temporary CUPS file.</p>
<p class="code">
-<a href="#cups_file_t">cups_file_t</a> *cupsTempFile2(char *filename, int len);</p>
+<a href="#cups_file_t">cups_file_t</a> *cupsTempFile2(<span class="reserved">char</span> *filename, <span class="reserved">int</span> len);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>filename</th>
<h3 class="function"><a id="cupsThreadCancel">cupsThreadCancel</a></h3>
<p class="description">Cancel (kill) a thread.</p>
<p class="code">
-void cupsThreadCancel(<a href="#cups_thread_t">cups_thread_t</a> thread);</p>
+<span class="reserved">void</span> cupsThreadCancel(<a href="#cups_thread_t">cups_thread_t</a> thread);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>thread</th>
<h3 class="function"><a id="cupsThreadCreate">cupsThreadCreate</a></h3>
<p class="description">Create a thread.</p>
<p class="code">
-<a href="#cups_thread_t">cups_thread_t</a> cupsThreadCreate(<a href="#cups_thread_func_t">cups_thread_func_t</a> func, void *arg);</p>
+<a href="#cups_thread_t">cups_thread_t</a> cupsThreadCreate(<a href="#cups_thread_func_t">cups_thread_func_t</a> func, <span class="reserved">void</span> *arg);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>func</th>
<h3 class="function"><a id="cupsThreadDetach">cupsThreadDetach</a></h3>
<p class="description">Tell the OS that the thread is running independently.</p>
<p class="code">
-void cupsThreadDetach(<a href="#cups_thread_t">cups_thread_t</a> thread);</p>
+<span class="reserved">void</span> cupsThreadDetach(<a href="#cups_thread_t">cups_thread_t</a> thread);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>thread</th>
<h3 class="function"><a id="cupsThreadWait">cupsThreadWait</a></h3>
<p class="description">Wait for a thread to exit.</p>
<p class="code">
-void *cupsThreadWait(<a href="#cups_thread_t">cups_thread_t</a> thread);</p>
+<span class="reserved">void</span> *cupsThreadWait(<a href="#cups_thread_t">cups_thread_t</a> thread);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>thread</th>
<h3 class="function"><a id="cupsUTF32ToUTF8">cupsUTF32ToUTF8</a></h3>
<p class="description">Convert UTF-32 to UTF-8.</p>
<p class="code">
-int cupsUTF32ToUTF8(<a href="#cups_utf8_t">cups_utf8_t</a> *dest, const <a href="#cups_utf32_t">cups_utf32_t</a> *src, const int maxout);</p>
+<span class="reserved">int</span> cupsUTF32ToUTF8(<a href="#cups_utf8_t">cups_utf8_t</a> *dest, <span class="reserved">const</span> <a href="#cups_utf32_t">cups_utf32_t</a> *src, <span class="reserved">const</span> <span class="reserved">int</span> maxout);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dest</th>
<h3 class="function"><a id="cupsUTF8ToCharset">cupsUTF8ToCharset</a></h3>
<p class="description">Convert UTF-8 to legacy character set.</p>
<p class="code">
-int cupsUTF8ToCharset(char *dest, const <a href="#cups_utf8_t">cups_utf8_t</a> *src, const int maxout, const <a href="#cups_encoding_t">cups_encoding_t</a> encoding);</p>
+<span class="reserved">int</span> cupsUTF8ToCharset(<span class="reserved">char</span> *dest, <span class="reserved">const</span> <a href="#cups_utf8_t">cups_utf8_t</a> *src, <span class="reserved">const</span> <span class="reserved">int</span> maxout, <span class="reserved">const</span> <a href="#cups_encoding_t">cups_encoding_t</a> encoding);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dest</th>
<h3 class="function"><a id="cupsUTF8ToUTF32">cupsUTF8ToUTF32</a></h3>
<p class="description">Convert UTF-8 to UTF-32.</p>
<p class="code">
-int cupsUTF8ToUTF32(<a href="#cups_utf32_t">cups_utf32_t</a> *dest, const <a href="#cups_utf8_t">cups_utf8_t</a> *src, const int maxout);</p>
+<span class="reserved">int</span> cupsUTF8ToUTF32(<a href="#cups_utf32_t">cups_utf32_t</a> *dest, <span class="reserved">const</span> <a href="#cups_utf8_t">cups_utf8_t</a> *src, <span class="reserved">const</span> <span class="reserved">int</span> maxout);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dest</th>
<h3 class="function"><span class="info"> DEPRECATED </span><a id="cupsUser">cupsUser</a></h3>
<p class="description">Return the current user's name.</p>
<p class="code">
-const char *cupsUser(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsUser(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">User name</p>
<h4 class="discussion">Discussion</h4>
<h3 class="function"><span class="info"> DEPRECATED </span><a id="cupsUserAgent">cupsUserAgent</a></h3>
<p class="description">Return the default HTTP User-Agent string.</p>
<p class="code">
-const char *cupsUserAgent(void);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *cupsUserAgent(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">User-Agent string</p>
<h3 class="function"><span class="info"> CUPS 1.4/macOS 10.6 </span><a id="cupsWriteRequestData">cupsWriteRequestData</a></h3>
<p class="description">Write additional data after an IPP request.</p>
<p class="code">
-http_status_t cupsWriteRequestData(<a href="#http_t">http_t</a> *http, const char *buffer, size_t length);</p>
+http_status_t cupsWriteRequestData(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *buffer, size_t length);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="httpAcceptConnection">httpAcceptConnection</a></h3>
<p class="description">Accept a new HTTP client connection.</p>
<p class="code">
-<a href="#http_t">http_t</a> *httpAcceptConnection(int fd, int blocking);</p>
+<a href="#http_t">http_t</a> *httpAcceptConnection(<span class="reserved">int</span> fd, <span class="reserved">int</span> blocking);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fd</th>
<p class="description">Close a socket created by <a href="#httpAddrConnect"><code>httpAddrConnect</code></a> or
<a href="#httpAddrListen"><code>httpAddrListen</code></a>.</p>
<p class="code">
-int httpAddrClose(<a href="#http_addr_t">http_addr_t</a> *addr, int fd);</p>
+<span class="reserved">int</span> httpAddrClose(<a href="#http_addr_t">http_addr_t</a> *addr, <span class="reserved">int</span> fd);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>addr</th>
<p class="description">Connect to any of the addresses in the list with a
timeout and optional cancel.</p>
<p class="code">
-<a href="#http_addrlist_t">http_addrlist_t</a> *httpAddrConnect2(<a href="#http_addrlist_t">http_addrlist_t</a> *addrlist, int *sock, int msec, int *cancel);</p>
+<a href="#http_addrlist_t">http_addrlist_t</a> *httpAddrConnect2(<a href="#http_addrlist_t">http_addrlist_t</a> *addrlist, <span class="reserved">int</span> *sock, <span class="reserved">int</span> msec, <span class="reserved">int</span> *cancel);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>addrlist</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="httpAddrFreeList">httpAddrFreeList</a></h3>
<p class="description">Free an address list.</p>
<p class="code">
-void httpAddrFreeList(<a href="#http_addrlist_t">http_addrlist_t</a> *addrlist);</p>
+<span class="reserved">void</span> httpAddrFreeList(<a href="#http_addrlist_t">http_addrlist_t</a> *addrlist);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>addrlist</th>
<h3 class="function"><a id="httpAddrGetFamily">httpAddrGetFamily</a></h3>
<p class="description">Get the address family of an address.</p>
<p class="code">
-int httpAddrGetFamily(<a href="#http_addr_t">http_addr_t</a> *addr);</p>
+<span class="reserved">int</span> httpAddrGetFamily(<a href="#http_addr_t">http_addr_t</a> *addr);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>addr</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="httpAddrGetLength">httpAddrGetLength</a></h3>
<p class="description">Return the length of the address in bytes.</p>
<p class="code">
-size_t httpAddrGetLength(const <a href="#http_addr_t">http_addr_t</a> *addr);</p>
+size_t httpAddrGetLength(<span class="reserved">const</span> <a href="#http_addr_t">http_addr_t</a> *addr);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>addr</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="httpAddrGetList">httpAddrGetList</a></h3>
<p class="description">Get a list of addresses for a hostname.</p>
<p class="code">
-<a href="#http_addrlist_t">http_addrlist_t</a> *httpAddrGetList(const char *hostname, int family, const char *service);</p>
+<a href="#http_addrlist_t">http_addrlist_t</a> *httpAddrGetList(<span class="reserved">const</span> <span class="reserved">char</span> *hostname, <span class="reserved">int</span> family, <span class="reserved">const</span> <span class="reserved">char</span> *service);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>hostname</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="httpAddrGetPort">httpAddrGetPort</a></h3>
<p class="description">Get the port number associated with an address.</p>
<p class="code">
-int httpAddrGetPort(<a href="#http_addr_t">http_addr_t</a> *addr);</p>
+<span class="reserved">int</span> httpAddrGetPort(<a href="#http_addr_t">http_addr_t</a> *addr);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>addr</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="httpAddrGetString">httpAddrGetString</a></h3>
<p class="description">Convert an address to a numeric string.</p>
<p class="code">
-char *httpAddrGetString(const <a href="#http_addr_t">http_addr_t</a> *addr, char *s, size_t slen);</p>
+<span class="reserved">char</span> *httpAddrGetString(<span class="reserved">const</span> <a href="#http_addr_t">http_addr_t</a> *addr, <span class="reserved">char</span> *s, size_t slen);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>addr</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="httpAddrIsAny">httpAddrIsAny</a></h3>
<p class="description">Check for the "any" address.</p>
<p class="code">
-bool httpAddrIsAny(const <a href="#http_addr_t">http_addr_t</a> *addr);</p>
+<span class="reserved">bool</span> httpAddrIsAny(<span class="reserved">const</span> <a href="#http_addr_t">http_addr_t</a> *addr);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>addr</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="httpAddrIsEqual">httpAddrIsEqual</a></h3>
<p class="description">Compare two addresses.</p>
<p class="code">
-bool httpAddrIsEqual(const <a href="#http_addr_t">http_addr_t</a> *addr1, const <a href="#http_addr_t">http_addr_t</a> *addr2);</p>
+<span class="reserved">bool</span> httpAddrIsEqual(<span class="reserved">const</span> <a href="#http_addr_t">http_addr_t</a> *addr1, <span class="reserved">const</span> <a href="#http_addr_t">http_addr_t</a> *addr2);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>addr1</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="httpAddrIsLocalhost">httpAddrIsLocalhost</a></h3>
<p class="description">Check for the local loopback address.</p>
<p class="code">
-bool httpAddrIsLocalhost(const <a href="#http_addr_t">http_addr_t</a> *addr);</p>
+<span class="reserved">bool</span> httpAddrIsLocalhost(<span class="reserved">const</span> <a href="#http_addr_t">http_addr_t</a> *addr);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>addr</th>
<p class="description">Create a listening socket bound to the specified
address and port.</p>
<p class="code">
-int httpAddrListen(<a href="#http_addr_t">http_addr_t</a> *addr, int port);</p>
+<span class="reserved">int</span> httpAddrListen(<a href="#http_addr_t">http_addr_t</a> *addr, <span class="reserved">int</span> port);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>addr</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="httpAddrLookup">httpAddrLookup</a></h3>
<p class="description">Lookup the hostname associated with the address.</p>
<p class="code">
-char *httpAddrLookup(const <a href="#http_addr_t">http_addr_t</a> *addr, char *name, int namelen);</p>
+<span class="reserved">char</span> *httpAddrLookup(<span class="reserved">const</span> <a href="#http_addr_t">http_addr_t</a> *addr, <span class="reserved">char</span> *name, <span class="reserved">int</span> namelen);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>addr</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="httpAddrSetPort">httpAddrSetPort</a></h3>
<p class="description">Set the port number associated with an address.</p>
<p class="code">
-void httpAddrSetPort(<a href="#http_addr_t">http_addr_t</a> *addr, int port);</p>
+<span class="reserved">void</span> httpAddrSetPort(<a href="#http_addr_t">http_addr_t</a> *addr, <span class="reserved">int</span> port);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>addr</th>
<p class="description">Assemble a uniform resource identifier from its
components.</p>
<p class="code">
-<a href="#http_uri_status_t">http_uri_status_t</a> httpAssembleURI(<a href="#http_uri_coding_t">http_uri_coding_t</a> encoding, char *uri, int urilen, const char *scheme, const char *username, const char *host, int port, const char *resource);</p>
+<a href="#http_uri_status_t">http_uri_status_t</a> httpAssembleURI(<a href="#http_uri_coding_t">http_uri_coding_t</a> encoding, <span class="reserved">char</span> *uri, <span class="reserved">int</span> urilen, <span class="reserved">const</span> <span class="reserved">char</span> *scheme, <span class="reserved">const</span> <span class="reserved">char</span> *username, <span class="reserved">const</span> <span class="reserved">char</span> *host, <span class="reserved">int</span> port, <span class="reserved">const</span> <span class="reserved">char</span> *resource);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>encoding</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="httpAssembleURIf">httpAssembleURIf</a></h3>
<p class="description">Assemble a uniform resource identifier from its components with a formatted resource.</p>
<p class="code">
-<a href="#http_uri_status_t">http_uri_status_t</a> httpAssembleURIf(<a href="#http_uri_coding_t">http_uri_coding_t</a> encoding, char *uri, int urilen, const char *scheme, const char *username, const char *host, int port, const char *resourcef, ...);</p>
+<a href="#http_uri_status_t">http_uri_status_t</a> httpAssembleURIf(<a href="#http_uri_coding_t">http_uri_coding_t</a> encoding, <span class="reserved">char</span> *uri, <span class="reserved">int</span> urilen, <span class="reserved">const</span> <span class="reserved">char</span> *scheme, <span class="reserved">const</span> <span class="reserved">char</span> *username, <span class="reserved">const</span> <span class="reserved">char</span> *host, <span class="reserved">int</span> port, <span class="reserved">const</span> <span class="reserved">char</span> *resourcef, ...);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>encoding</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="httpAssembleUUID">httpAssembleUUID</a></h3>
<p class="description">Assemble a name-based UUID URN conforming to RFC 4122.</p>
<p class="code">
-char *httpAssembleUUID(const char *server, int port, const char *name, int number, char *buffer, size_t bufsize);</p>
+<span class="reserved">char</span> *httpAssembleUUID(<span class="reserved">const</span> <span class="reserved">char</span> *server, <span class="reserved">int</span> port, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> number, <span class="reserved">char</span> *buffer, size_t bufsize);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>server</th>
<h3 class="function"><span class="info"> DEPRECATED </span><a id="httpBlocking">httpBlocking</a></h3>
<p class="description">Set blocking/non-blocking behavior on a connection.</p>
<p class="code">
-void httpBlocking(<a href="#http_t">http_t</a> *http, int b);</p>
+<span class="reserved">void</span> httpBlocking(<a href="#http_t">http_t</a> *http, <span class="reserved">int</span> b);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> DEPRECATED </span><a id="httpCheck">httpCheck</a></h3>
<p class="description">Check to see if there is a pending response from the server.</p>
<p class="code">
-int httpCheck(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">int</span> httpCheck(<a href="#http_t">http_t</a> *http);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.1.19/macOS 10.3 </span><a id="httpClearCookie">httpClearCookie</a></h3>
<p class="description">Clear the cookie value(s).</p>
<p class="code">
-void httpClearCookie(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">void</span> httpClearCookie(<a href="#http_t">http_t</a> *http);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><a id="httpClearFields">httpClearFields</a></h3>
<p class="description">Clear HTTP request/response fields.</p>
<p class="code">
-void httpClearFields(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">void</span> httpClearFields(<a href="#http_t">http_t</a> *http);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><a id="httpClose">httpClose</a></h3>
<p class="description">Close a HTTP connection.</p>
<p class="code">
-void httpClose(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">void</span> httpClose(<a href="#http_t">http_t</a> *http);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="httpConnect2">httpConnect2</a></h3>
<p class="description">Connect to a HTTP server.</p>
<p class="code">
-<a href="#http_t">http_t</a> *httpConnect2(const char *host, int port, <a href="#http_addrlist_t">http_addrlist_t</a> *addrlist, int family, <a href="#http_encryption_t">http_encryption_t</a> encryption, int blocking, int msec, int *cancel);</p>
+<a href="#http_t">http_t</a> *httpConnect2(<span class="reserved">const</span> <span class="reserved">char</span> *host, <span class="reserved">int</span> port, <a href="#http_addrlist_t">http_addrlist_t</a> *addrlist, <span class="reserved">int</span> family, <a href="#http_encryption_t">http_encryption_t</a> encryption, <span class="reserved">int</span> blocking, <span class="reserved">int</span> msec, <span class="reserved">int</span> *cancel);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>host</th>
specifies an integer variable that can be set to a non-zero value to cancel
the connection process.
+</p>
+<h3 class="function"><a id="httpConnectAgain">httpConnectAgain</a></h3>
+<p class="description">Reconnect to a HTTP server with timeout and optional cancel variable.</p>
+<p class="code">
+<span class="reserved">bool</span> httpConnectAgain(<a href="#http_t">http_t</a> *http, <span class="reserved">int</span> msec, <span class="reserved">int</span> *cancel);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>http</th>
+<td class="description">HTTP connection</td></tr>
+<tr><th>msec</th>
+<td class="description">Timeout in milliseconds</td></tr>
+<tr><th>cancel</th>
+<td class="description">Pointer to "cancel" variable</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description"><code>true</code> on success, <code>false</code> on failure</p>
+<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="httpConnectURI">httpConnectURI</a></h3>
+<p class="description">Connect to a HTTP service using a URI.</p>
+<p class="code">
+<a href="#http_t">http_t</a> *httpConnectURI(<span class="reserved">const</span> <span class="reserved">char</span> *uri, <span class="reserved">char</span> *host, size_t hsize, <span class="reserved">int</span> *port, <span class="reserved">char</span> *resource, size_t rsize, <span class="reserved">bool</span> blocking, <span class="reserved">int</span> msec, <span class="reserved">int</span> *cancel, <span class="reserved">bool</span> require_ca);</p>
+<h4 class="parameters">Parameters</h4>
+<table class="list"><tbody>
+<tr><th>uri</th>
+<td class="description">Service to connect to</td></tr>
+<tr><th>host</th>
+<td class="description">Host name buffer (<code>NULL</code> for don't care)</td></tr>
+<tr><th>hsize</th>
+<td class="description">Size of host name buffer</td></tr>
+<tr><th>port</th>
+<td class="description">Port number (<code>NULL</code> for don't care)</td></tr>
+<tr><th>resource</th>
+<td class="description">Resource path buffer (<code>NULL</code> for don't care)</td></tr>
+<tr><th>rsize</th>
+<td class="description">Size of resource path buffer</td></tr>
+<tr><th>blocking</th>
+<td class="description"><code>true</code> for blocking connection, <code>false</code> for non-blocking</td></tr>
+<tr><th>msec</th>
+<td class="description">Connection timeout in milliseconds, <code>0</code> means don't connect</td></tr>
+<tr><th>cancel</th>
+<td class="description">Pointer to "cancel" variable or <code>NULL</code> for none</td></tr>
+<tr><th>require_ca</th>
+<td class="description"><code>true</code> to require a CA-signed X.509 certificate</td></tr>
+</tbody></table>
+<h4 class="returnvalue">Return Value</h4>
+<p class="description">New HTTP connection</p>
+<h4 class="discussion">Discussion</h4>
+<p class="discussion">This function creates a connection to a HTTP server. The "uri" argument
+specifies a "http", "https", "ipp", or "ipps" URI for the service.<br>
+<br>
+The resource path for the service is returned in the buffer pointed to by
+the "resource" argument of size "rsize".<br>
+<br>
+The "msec" argument specifies how long to try to connect to the server or <code>0</code>
+to just create an unconnected <code>http_t</code> object. The "cancel" argument
+specifies an integer variable that can be set to a non-zero value to cancel
+the connection process.<br>
+<br>
+The "require_ca" argument specifies whether to verify that the service
+connection is using a CA-signed X.509 certificate.
+
</p>
<h3 class="function"><a id="httpCopyPeerCredentials">httpCopyPeerCredentials</a></h3>
<p class="description">Copy the credentials associated with the peer in an encrypted connection.</p>
<p class="code">
-char *httpCopyPeerCredentials(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">char</span> *httpCopyPeerCredentials(<a href="#http_t">http_t</a> *http);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="httpDecode64_3">httpDecode64_3</a></h3>
<p class="description">Base64-decode a string.</p>
<p class="code">
-char *httpDecode64_3(char *out, size_t *outlen, const char *in, const char **end);</p>
+<span class="reserved">char</span> *httpDecode64_3(<span class="reserved">char</span> *out, size_t *outlen, <span class="reserved">const</span> <span class="reserved">char</span> *in, <span class="reserved">const</span> <span class="reserved">char</span> **end);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>out</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="httpEncode64_3">httpEncode64_3</a></h3>
<p class="description">Base64-encode a string.</p>
<p class="code">
-char *httpEncode64_3(char *out, size_t outlen, const char *in, size_t inlen, bool url);</p>
+<span class="reserved">char</span> *httpEncode64_3(<span class="reserved">char</span> *out, size_t outlen, <span class="reserved">const</span> <span class="reserved">char</span> *in, size_t inlen, <span class="reserved">bool</span> url);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>out</th>
<h3 class="function"><a id="httpFieldValue">httpFieldValue</a></h3>
<p class="description">Return the HTTP field enumeration value for a field name.</p>
<p class="code">
-<a href="#http_field_t">http_field_t</a> httpFieldValue(const char *name);</p>
+<a href="#http_field_t">http_field_t</a> httpFieldValue(<span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>name</th>
<h3 class="function"><a id="httpFlush">httpFlush</a></h3>
<p class="description">Flush data read from a HTTP connection.</p>
<p class="code">
-void httpFlush(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">void</span> httpFlush(<a href="#http_t">http_t</a> *http);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="httpFlushWrite">httpFlushWrite</a></h3>
<p class="description">Flush data written to a HTTP connection.</p>
<p class="code">
-int httpFlushWrite(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">int</span> httpFlushWrite(<a href="#http_t">http_t</a> *http);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.3/macOS 10.5 </span><a id="httpGetAuthString">httpGetAuthString</a></h3>
<p class="description">Get the current authorization string.</p>
<p class="code">
-char *httpGetAuthString(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">char</span> *httpGetAuthString(<a href="#http_t">http_t</a> *http);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="httpGetBlocking">httpGetBlocking</a></h3>
<p class="description">Get the blocking/non-blocking state of a connection.</p>
<p class="code">
-int httpGetBlocking(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">int</span> httpGetBlocking(<a href="#http_t">http_t</a> *http);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<p class="description">Get a common content encoding, if any, between
the client and server.</p>
<p class="code">
-const char *httpGetContentEncoding(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpGetContentEncoding(<a href="#http_t">http_t</a> *http);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.1.19/macOS 10.3 </span><a id="httpGetCookie">httpGetCookie</a></h3>
<p class="description">Get any cookie data from the response.</p>
<p class="code">
-const char *httpGetCookie(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpGetCookie(<a href="#http_t">http_t</a> *http);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="httpGetDateString2">httpGetDateString2</a></h3>
<p class="description">Get a formatted date/time string from a time value.</p>
<p class="code">
-const char *httpGetDateString2(time_t t, char *s, int slen);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpGetDateString2(time_t t, <span class="reserved">char</span> *s, <span class="reserved">int</span> slen);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>t</th>
<h3 class="function"><a id="httpGetDateTime">httpGetDateTime</a></h3>
<p class="description">Get a time value from a formatted date/time string.</p>
<p class="code">
-time_t httpGetDateTime(const char *s);</p>
+time_t httpGetDateTime(<span class="reserved">const</span> <span class="reserved">char</span> *s);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>s</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="httpGetError">httpGetError</a></h3>
<p class="description">Get the last error on a connection.</p>
<p class="code">
-int httpGetError(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">int</span> httpGetError(<a href="#http_t">http_t</a> *http);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="httpGetFd">httpGetFd</a></h3>
<p class="description">Get the file descriptor associated with a connection.</p>
<p class="code">
-int httpGetFd(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">int</span> httpGetFd(<a href="#http_t">http_t</a> *http);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><a id="httpGetField">httpGetField</a></h3>
<p class="description">Get a field value from a request/response.</p>
<p class="code">
-const char *httpGetField(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">http_field_t</a> field);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpGetField(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">http_field_t</a> field);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="httpGetHostname">httpGetHostname</a></h3>
<p class="description">Get the FQDN for the connection or local system.</p>
<p class="code">
-const char *httpGetHostname(<a href="#http_t">http_t</a> *http, char *s, int slen);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpGetHostname(<a href="#http_t">http_t</a> *http, <span class="reserved">char</span> *s, <span class="reserved">int</span> slen);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="httpGetSubField2">httpGetSubField2</a></h3>
<p class="description">Get a sub-field value.</p>
<p class="code">
-char *httpGetSubField2(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">http_field_t</a> field, const char *name, char *value, int valuelen);</p>
+<span class="reserved">char</span> *httpGetSubField2(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">http_field_t</a> field, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">char</span> *value, <span class="reserved">int</span> valuelen);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><a id="httpGets2">httpGets2</a></h3>
<p class="description">Get a line of text from a HTTP connection.</p>
<p class="code">
-char *httpGets2(<a href="#http_t">http_t</a> *http, char *line, size_t length);</p>
+<span class="reserved">char</span> *httpGets2(<a href="#http_t">http_t</a> *http, <span class="reserved">char</span> *line, size_t length);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<p class="description">Initialize the HTTP interface library and set the
default HTTP proxy (if any).</p>
<p class="code">
-void httpInitialize(void);</p>
+<span class="reserved">void</span> httpInitialize(<span class="reserved">void</span>);</p>
<h3 class="function"><span class="info"> CUPS 2.0/OS 10.10 </span><a id="httpIsChunked">httpIsChunked</a></h3>
<p class="description">Report whether a message body is chunked.</p>
<p class="code">
-int httpIsChunked(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">int</span> httpIsChunked(<a href="#http_t">http_t</a> *http);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.0/OS 10.10 </span><a id="httpIsEncrypted">httpIsEncrypted</a></h3>
<p class="description">Report whether a connection is encrypted.</p>
<p class="code">
-int httpIsEncrypted(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">int</span> httpIsEncrypted(<a href="#http_t">http_t</a> *http);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> DEPRECATED </span><a id="httpMD5">httpMD5</a></h3>
<p class="description">Compute the MD5 sum of the username:group:password.</p>
<p class="code">
-char *httpMD5(const char *username, const char *realm, const char *passwd, char md5[33]);</p>
+<span class="reserved">char</span> *httpMD5(<span class="reserved">const</span> <span class="reserved">char</span> *username, <span class="reserved">const</span> <span class="reserved">char</span> *realm, <span class="reserved">const</span> <span class="reserved">char</span> *passwd, <span class="reserved">char</span> md5[33]);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>username</th>
with the server-supplied nonce value, method, and
request-uri.</p>
<p class="code">
-char *httpMD5Final(const char *nonce, const char *method, const char *resource, char md5[33]);</p>
+<span class="reserved">char</span> *httpMD5Final(<span class="reserved">const</span> <span class="reserved">char</span> *nonce, <span class="reserved">const</span> <span class="reserved">char</span> *method, <span class="reserved">const</span> <span class="reserved">char</span> *resource, <span class="reserved">char</span> md5[33]);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>nonce</th>
<h3 class="function"><span class="info"> DEPRECATED </span><a id="httpMD5String">httpMD5String</a></h3>
<p class="description">Convert an MD5 sum to a character string.</p>
<p class="code">
-char *httpMD5String(const unsigned char *sum, char md5[33]);</p>
+<span class="reserved">char</span> *httpMD5String(<span class="reserved">const</span> <span class="reserved">unsigned</span> <span class="reserved">char</span> *sum, <span class="reserved">char</span> md5[33]);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>sum</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="httpPeek">httpPeek</a></h3>
<p class="description">Peek at data from a HTTP connection.</p>
<p class="code">
-ssize_t httpPeek(<a href="#http_t">http_t</a> *http, char *buffer, size_t length);</p>
+ssize_t httpPeek(<a href="#http_t">http_t</a> *http, <span class="reserved">char</span> *buffer, size_t length);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="httpRead2">httpRead2</a></h3>
<p class="description">Read data from a HTTP connection.</p>
<p class="code">
-ssize_t httpRead2(<a href="#http_t">http_t</a> *http, char *buffer, size_t length);</p>
+ssize_t httpRead2(<a href="#http_t">http_t</a> *http, <span class="reserved">char</span> *buffer, size_t length);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="httpReadRequest">httpReadRequest</a></h3>
<p class="description">Read a HTTP request from a connection.</p>
<p class="code">
-<a href="#http_state_t">http_state_t</a> httpReadRequest(<a href="#http_t">http_t</a> *http, char *uri, size_t urilen);</p>
+<a href="#http_state_t">http_state_t</a> httpReadRequest(<a href="#http_t">http_t</a> *http, <span class="reserved">char</span> *uri, size_t urilen);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
</tbody></table>
<h4 class="returnvalue">Return Value</h4>
<p class="description">New state of connection</p>
-<h3 class="function"><a id="httpReconnect2">httpReconnect2</a></h3>
-<p class="description">Reconnect to a HTTP server with timeout and optional
- cancel.</p>
-<p class="code">
-int httpReconnect2(<a href="#http_t">http_t</a> *http, int msec, int *cancel);</p>
-<h4 class="parameters">Parameters</h4>
-<table class="list"><tbody>
-<tr><th>http</th>
-<td class="description">HTTP connection</td></tr>
-<tr><th>msec</th>
-<td class="description">Timeout in milliseconds</td></tr>
-<tr><th>cancel</th>
-<td class="description">Pointer to "cancel" variable</td></tr>
-</tbody></table>
-<h4 class="returnvalue">Return Value</h4>
-<p class="description">0 on success, non-zero on failure</p>
<h3 class="function"><span class="info"> CUPS 2.0/OS 10.10 </span><a id="httpResolveHostname">httpResolveHostname</a></h3>
<p class="description">Resolve the hostname of the HTTP connection
address.</p>
<p class="code">
-const char *httpResolveHostname(<a href="#http_t">http_t</a> *http, char *buffer, size_t bufsize);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpResolveHostname(<a href="#http_t">http_t</a> *http, <span class="reserved">char</span> *buffer, size_t bufsize);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><a id="httpResolveURI">httpResolveURI</a></h3>
<p class="description">Resolve a DNS-SD URI.</p>
<p class="code">
-const char *httpResolveURI(const char *uri, char *resolved_uri, size_t resolved_size, <a href="#http_resolve_t">http_resolve_t</a> options, <a href="#http_resolve_cb_t">http_resolve_cb_t</a> cb, void *cb_data);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpResolveURI(<span class="reserved">const</span> <span class="reserved">char</span> *uri, <span class="reserved">char</span> *resolved_uri, size_t resolved_size, <a href="#http_resolve_t">http_resolve_t</a> options, <a href="#http_resolve_cb_t">http_resolve_cb_t</a> cb, <span class="reserved">void</span> *cb_data);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>uri</th>
<p class="description">Separate a Universal Resource Identifier into its
components.</p>
<p class="code">
-<a href="#http_uri_status_t">http_uri_status_t</a> httpSeparateURI(<a href="#http_uri_coding_t">http_uri_coding_t</a> decoding, const char *uri, char *scheme, int schemelen, char *username, int usernamelen, char *host, int hostlen, int *port, char *resource, int resourcelen);</p>
+<a href="#http_uri_status_t">http_uri_status_t</a> httpSeparateURI(<a href="#http_uri_coding_t">http_uri_coding_t</a> decoding, <span class="reserved">const</span> <span class="reserved">char</span> *uri, <span class="reserved">char</span> *scheme, <span class="reserved">int</span> schemelen, <span class="reserved">char</span> *username, <span class="reserved">int</span> usernamelen, <span class="reserved">char</span> *host, <span class="reserved">int</span> hostlen, <span class="reserved">int</span> *port, <span class="reserved">char</span> *resource, <span class="reserved">int</span> resourcelen);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>decoding</th>
<h3 class="function"><span class="info"> CUPS 1.3/macOS 10.5 </span><a id="httpSetAuthString">httpSetAuthString</a></h3>
<p class="description">Set the current authorization string.</p>
<p class="code">
-void httpSetAuthString(<a href="#http_t">http_t</a> *http, const char *scheme, const char *data);</p>
+<span class="reserved">void</span> httpSetAuthString(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *scheme, <span class="reserved">const</span> <span class="reserved">char</span> *data);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><a id="httpSetBlocking">httpSetBlocking</a></h3>
<p class="description">Set blocking/non-blocking behavior on a connection.</p>
<p class="code">
-void httpSetBlocking(<a href="#http_t">http_t</a> *http, bool b);</p>
+<span class="reserved">void</span> httpSetBlocking(<a href="#http_t">http_t</a> *http, <span class="reserved">bool</span> b);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.1.19/macOS 10.3 </span><a id="httpSetCookie">httpSetCookie</a></h3>
<p class="description">Set the cookie value(s).</p>
<p class="code">
-void httpSetCookie(<a href="#http_t">http_t</a> *http, const char *cookie);</p>
+<span class="reserved">void</span> httpSetCookie(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *cookie);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="httpSetDefaultField">httpSetDefaultField</a></h3>
<p class="description">Set the default value of an HTTP header.</p>
<p class="code">
-void httpSetDefaultField(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">http_field_t</a> field, const char *value);</p>
+<span class="reserved">void</span> httpSetDefaultField(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">http_field_t</a> field, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="httpSetEncryption">httpSetEncryption</a></h3>
<p class="description">Set the required encryption on the link.</p>
<p class="code">
-bool httpSetEncryption(<a href="#http_t">http_t</a> *http, <a href="#http_encryption_t">http_encryption_t</a> e);</p>
+<span class="reserved">bool</span> httpSetEncryption(<a href="#http_t">http_t</a> *http, <a href="#http_encryption_t">http_encryption_t</a> e);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="httpSetExpect">httpSetExpect</a></h3>
<p class="description">Set the Expect: header in a request.</p>
<p class="code">
-void httpSetExpect(<a href="#http_t">http_t</a> *http, http_status_t expect);</p>
+<span class="reserved">void</span> httpSetExpect(<a href="#http_t">http_t</a> *http, http_status_t expect);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><a id="httpSetField">httpSetField</a></h3>
<p class="description">Set the value of an HTTP header.</p>
<p class="code">
-void httpSetField(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">http_field_t</a> field, const char *value);</p>
+<span class="reserved">void</span> httpSetField(<a href="#http_t">http_t</a> *http, <a href="#http_field_t">http_field_t</a> field, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.0/OS 10.10 </span><a id="httpSetKeepAlive">httpSetKeepAlive</a></h3>
<p class="description">Set the current Keep-Alive state of a connection.</p>
<p class="code">
-void httpSetKeepAlive(<a href="#http_t">http_t</a> *http, <a href="#http_keepalive_t">http_keepalive_t</a> keep_alive);</p>
+<span class="reserved">void</span> httpSetKeepAlive(<a href="#http_t">http_t</a> *http, <a href="#http_keepalive_t">http_keepalive_t</a> keep_alive);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="httpSetLength">httpSetLength</a></h3>
<p class="description">Set the content-length and content-encoding.</p>
<p class="code">
-void httpSetLength(<a href="#http_t">http_t</a> *http, size_t length);</p>
+<span class="reserved">void</span> httpSetLength(<a href="#http_t">http_t</a> *http, size_t length);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.5/macOS 10.7 </span><a id="httpSetTimeout">httpSetTimeout</a></h3>
<p class="description">Set read/write timeouts and an optional callback.</p>
<p class="code">
-void httpSetTimeout(<a href="#http_t">http_t</a> *http, double timeout, <a href="#http_timeout_cb_t">http_timeout_cb_t</a> cb, void *user_data);</p>
+<span class="reserved">void</span> httpSetTimeout(<a href="#http_t">http_t</a> *http, <span class="reserved">double</span> timeout, <a href="#http_timeout_cb_t">http_timeout_cb_t</a> cb, <span class="reserved">void</span> *user_data);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.0/OS 10.10 </span><a id="httpShutdown">httpShutdown</a></h3>
<p class="description">Shutdown one side of an HTTP connection.</p>
<p class="code">
-void httpShutdown(<a href="#http_t">http_t</a> *http);</p>
+<span class="reserved">void</span> httpShutdown(<a href="#http_t">http_t</a> *http);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.0/OS 10.10 </span><a id="httpStateString">httpStateString</a></h3>
<p class="description">Return the string describing a HTTP state value.</p>
<p class="code">
-const char *httpStateString(<a href="#http_state_t">http_state_t</a> state);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpStateString(<a href="#http_state_t">http_state_t</a> state);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>state</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="httpStatusString">httpStatusString</a></h3>
<p class="description">Return a short string describing a HTTP status code.</p>
<p class="code">
-const char *httpStatusString(http_status_t status);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpStatusString(http_status_t status);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>status</th>
<h3 class="function"><span class="info"> CUPS 2.0/OS 10.10 </span><a id="httpURIStatusString">httpURIStatusString</a></h3>
<p class="description">Return a string describing a URI status code.</p>
<p class="code">
-const char *httpURIStatusString(<a href="#http_uri_status_t">http_uri_status_t</a> status);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *httpURIStatusString(<a href="#http_uri_status_t">http_uri_status_t</a> status);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>status</th>
<h3 class="function"><span class="info"> CUPS 1.1.19/macOS 10.3 </span><a id="httpWait">httpWait</a></h3>
<p class="description">Wait for data available on a connection.</p>
<p class="code">
-int httpWait(<a href="#http_t">http_t</a> *http, int msec);</p>
+<span class="reserved">int</span> httpWait(<a href="#http_t">http_t</a> *http, <span class="reserved">int</span> msec);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="httpWrite2">httpWrite2</a></h3>
<p class="description">Write data to a HTTP connection.</p>
<p class="code">
-ssize_t httpWrite2(<a href="#http_t">http_t</a> *http, const char *buffer, size_t length);</p>
+ssize_t httpWrite2(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *buffer, size_t length);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="httpWriteRequest">httpWriteRequest</a></h3>
<p class="description">Send a HTTP request.</p>
<p class="code">
-bool httpWriteRequest(<a href="#http_t">http_t</a> *http, const char *method, const char *uri);</p>
+<span class="reserved">bool</span> httpWriteRequest(<a href="#http_t">http_t</a> *http, <span class="reserved">const</span> <span class="reserved">char</span> *method, <span class="reserved">const</span> <span class="reserved">char</span> *uri);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="httpWriteResponse">httpWriteResponse</a></h3>
<p class="description">Write a HTTP response to a client connection.</p>
<p class="code">
-int httpWriteResponse(<a href="#http_t">http_t</a> *http, http_status_t status);</p>
+<span class="reserved">int</span> httpWriteResponse(<a href="#http_t">http_t</a> *http, http_status_t status);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>http</th>
<h3 class="function"><a id="ippAddBoolean">ippAddBoolean</a></h3>
<p class="description">Add a boolean attribute to an IPP message.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddBoolean(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, char value);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddBoolean(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">char</span> value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><a id="ippAddBooleans">ippAddBooleans</a></h3>
<p class="description">Add an array of boolean values.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddBooleans(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, int num_values, const char *values);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddBooleans(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_values, <span class="reserved">const</span> <span class="reserved">char</span> *values);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.1.19/macOS 10.3 </span><a id="ippAddCollection">ippAddCollection</a></h3>
<p class="description">Add a collection value.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCollection(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, <a href="#ipp_t">ipp_t</a> *value);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCollection(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <a href="#ipp_t">ipp_t</a> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.1.19/macOS 10.3 </span><a id="ippAddCollections">ippAddCollections</a></h3>
<p class="description">Add an array of collection values.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCollections(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, int num_values, const <a href="#ipp_t">ipp_t</a> **values);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCollections(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_values, <span class="reserved">const</span> <a href="#ipp_t">ipp_t</a> **values);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="ippAddCredentialsString">ippAddCredentialsString</a></h3>
<p class="description">Add a credentials string attribute to an IPP message.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCredentialsString(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, const char *credentials);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddCredentialsString(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *credentials);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><a id="ippAddDate">ippAddDate</a></h3>
<p class="description">Add a dateTime attribute to an IPP message.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddDate(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, const <a href="#ipp_uchar_t">ipp_uchar_t</a> *value);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddDate(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <a href="#ipp_uchar_t">ipp_uchar_t</a> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><a id="ippAddInteger">ippAddInteger</a></h3>
<p class="description">Add a integer attribute to an IPP message.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddInteger(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, const char *name, int value);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddInteger(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><a id="ippAddIntegers">ippAddIntegers</a></h3>
<p class="description">Add an array of integer values.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddIntegers(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, const char *name, int num_values, const int *values);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddIntegers(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_values, <span class="reserved">const</span> <span class="reserved">int</span> *values);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="ippAddOctetString">ippAddOctetString</a></h3>
<p class="description">Add an octetString value to an IPP message.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddOctetString(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, const void *data, int datalen);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddOctetString(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">void</span> *data, <span class="reserved">int</span> datalen);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippAddOutOfBand">ippAddOutOfBand</a></h3>
<p class="description">Add an out-of-band value to an IPP message.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddOutOfBand(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, const char *name);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddOutOfBand(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, <span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><a id="ippAddRange">ippAddRange</a></h3>
<p class="description">Add a range of values to an IPP message.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddRange(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, int lower, int upper);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddRange(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> lower, <span class="reserved">int</span> upper);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><a id="ippAddRanges">ippAddRanges</a></h3>
<p class="description">Add ranges of values to an IPP message.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddRanges(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, int num_values, const int *lower, const int *upper);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddRanges(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_values, <span class="reserved">const</span> <span class="reserved">int</span> *lower, <span class="reserved">const</span> <span class="reserved">int</span> *upper);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><a id="ippAddResolution">ippAddResolution</a></h3>
<p class="description">Add a resolution value to an IPP message.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddResolution(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, <a href="#ipp_res_t">ipp_res_t</a> units, int xres, int yres);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddResolution(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <a href="#ipp_res_t">ipp_res_t</a> units, <span class="reserved">int</span> xres, <span class="reserved">int</span> yres);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><a id="ippAddResolutions">ippAddResolutions</a></h3>
<p class="description">Add resolution values to an IPP message.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddResolutions(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, const char *name, int num_values, <a href="#ipp_res_t">ipp_res_t</a> units, const int *xres, const int *yres);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddResolutions(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_values, <a href="#ipp_res_t">ipp_res_t</a> units, <span class="reserved">const</span> <span class="reserved">int</span> *xres, <span class="reserved">const</span> <span class="reserved">int</span> *yres);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><a id="ippAddString">ippAddString</a></h3>
<p class="description">Add a language-encoded string to an IPP message.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddString(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, const char *name, const char *language, const char *value);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddString(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *language, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="ippAddStringf">ippAddStringf</a></h3>
<p class="description">Add a formatted string to an IPP message.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStringf(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, const char *name, const char *language, const char *format, ...);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStringf(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *language, <span class="reserved">const</span> <span class="reserved">char</span> *format, ...);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="ippAddStringfv">ippAddStringfv</a></h3>
<p class="description">Add a formatted string to an IPP message.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStringfv(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, const char *name, const char *language, const char *format, va_list ap);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStringfv(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *language, <span class="reserved">const</span> <span class="reserved">char</span> *format, va_list ap);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><a id="ippAddStrings">ippAddStrings</a></h3>
<p class="description">Add language-encoded strings to an IPP message.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStrings(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, const char *name, int num_values, const char *language, const char *const *values);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippAddStrings(<a href="#ipp_t">ipp_t</a> *ipp, ipp_tag_t group, ipp_tag_t value_tag, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> num_values, <span class="reserved">const</span> <span class="reserved">char</span> *language, <span class="reserved">const</span> <span class="reserved">char</span> *const *values);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippAttributeString">ippAttributeString</a></h3>
<p class="description">Convert the attribute's value to a string.</p>
<p class="code">
-size_t ippAttributeString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, char *buffer, size_t bufsize);</p>
+size_t ippAttributeString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">char</span> *buffer, size_t bufsize);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attr</th>
<p class="description">Determine whether an attribute contains the
specified value or is within the list of ranges.</p>
<p class="code">
-int ippContainsInteger(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int value);</p>
+<span class="reserved">int</span> ippContainsInteger(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attr</th>
<p class="description">Determine whether an attribute contains the
specified string value.</p>
<p class="code">
-int ippContainsString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, const char *value);</p>
+<span class="reserved">int</span> ippContainsString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attr</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippCopyAttribute">ippCopyAttribute</a></h3>
<p class="description">Copy an attribute.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippCopyAttribute(<a href="#ipp_t">ipp_t</a> *dst, <a href="#ipp_attribute_t">ipp_attribute_t</a> *srcattr, int quickcopy);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippCopyAttribute(<a href="#ipp_t">ipp_t</a> *dst, <a href="#ipp_attribute_t">ipp_attribute_t</a> *srcattr, <span class="reserved">int</span> quickcopy);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dst</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippCopyAttributes">ippCopyAttributes</a></h3>
<p class="description">Copy attributes from one IPP message to another.</p>
<p class="code">
-int ippCopyAttributes(<a href="#ipp_t">ipp_t</a> *dst, <a href="#ipp_t">ipp_t</a> *src, int quickcopy, <a href="#ipp_copy_cb_t">ipp_copy_cb_t</a> cb, void *context);</p>
+<span class="reserved">int</span> ippCopyAttributes(<a href="#ipp_t">ipp_t</a> *dst, <a href="#ipp_t">ipp_t</a> *src, <span class="reserved">int</span> quickcopy, <a href="#ipp_copy_cb_t">ipp_copy_cb_t</a> cb, <span class="reserved">void</span> *context);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dst</th>
<h3 class="function"><a id="ippCopyCredentialsString">ippCopyCredentialsString</a></h3>
<p class="description">Copy a credentials value from an IPP attribute.</p>
<p class="code">
-char *ippCopyCredentialsString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
+<span class="reserved">char</span> *ippCopyCredentialsString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attr</th>
<p class="description">Convert from RFC 2579 Date/Time format to time in
seconds.</p>
<p class="code">
-time_t ippDateToTime(const <a href="#ipp_uchar_t">ipp_uchar_t</a> *date);</p>
+time_t ippDateToTime(<span class="reserved">const</span> <a href="#ipp_uchar_t">ipp_uchar_t</a> *date);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>date</th>
<h3 class="function"><a id="ippDelete">ippDelete</a></h3>
<p class="description">Delete an IPP message.</p>
<p class="code">
-void ippDelete(<a href="#ipp_t">ipp_t</a> *ipp);</p>
+<span class="reserved">void</span> ippDelete(<a href="#ipp_t">ipp_t</a> *ipp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.1.19/macOS 10.3 </span><a id="ippDeleteAttribute">ippDeleteAttribute</a></h3>
<p class="description">Delete a single attribute in an IPP message.</p>
<p class="code">
-void ippDeleteAttribute(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
+<span class="reserved">void</span> ippDeleteAttribute(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippDeleteValues">ippDeleteValues</a></h3>
<p class="description">Delete values in an attribute.</p>
<p class="code">
-int ippDeleteValues(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, int count);</p>
+<span class="reserved">int</span> ippDeleteValues(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">int</span> count);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><a id="ippEnumString">ippEnumString</a></h3>
<p class="description">Return a string corresponding to the enum value.</p>
<p class="code">
-const char *ippEnumString(const char *attrname, int enumvalue);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippEnumString(<span class="reserved">const</span> <span class="reserved">char</span> *attrname, <span class="reserved">int</span> enumvalue);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attrname</th>
<h3 class="function"><a id="ippEnumValue">ippEnumValue</a></h3>
<p class="description">Return the value associated with a given enum string.</p>
<p class="code">
-int ippEnumValue(const char *attrname, const char *enumstring);</p>
+<span class="reserved">int</span> ippEnumValue(<span class="reserved">const</span> <span class="reserved">char</span> *attrname, <span class="reserved">const</span> <span class="reserved">char</span> *enumstring);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attrname</th>
<h3 class="function"><a id="ippErrorString">ippErrorString</a></h3>
<p class="description">Return a name for the given status code.</p>
<p class="code">
-const char *ippErrorString(ipp_status_t error);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippErrorString(ipp_status_t error);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>error</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="ippErrorValue">ippErrorValue</a></h3>
<p class="description">Return a status code for the given name.</p>
<p class="code">
-ipp_status_t ippErrorValue(const char *name);</p>
+ipp_status_t ippErrorValue(<span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>name</th>
<h3 class="function"><a id="ippFileClose">ippFileClose</a></h3>
<p class="description">Close an IPP data file.</p>
<p class="code">
-bool ippFileClose(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
+<span class="reserved">bool</span> ippFileClose(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileDelete">ippFileDelete</a></h3>
<p class="description">Close an IPP data file and free all memory.</p>
<p class="code">
-bool ippFileDelete(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
+<span class="reserved">bool</span> ippFileDelete(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileExpandVars">ippFileExpandVars</a></h3>
<p class="description">Expand IPP data file and environment variables in a string.</p>
<p class="code">
-size_t ippFileExpandVars(<a href="#ipp_file_t">ipp_file_t</a> *file, char *dst, const char *src, size_t dstsize);</p>
+size_t ippFileExpandVars(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">char</span> *dst, <span class="reserved">const</span> <span class="reserved">char</span> *src, size_t dstsize);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileGetAttribute">ippFileGetAttribute</a></h3>
<p class="description">Get a single named attribute from an IPP data file.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFileGetAttribute(<a href="#ipp_file_t">ipp_file_t</a> *file, const char *name, ipp_tag_t value_tag);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFileGetAttribute(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">const</span> <span class="reserved">char</span> *name, ipp_tag_t value_tag);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileGetFilename">ippFileGetFilename</a></h3>
<p class="description">Get the filename for an IPP data file.</p>
<p class="code">
-const char *ippFileGetFilename(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippFileGetFilename(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileGetLineNumber">ippFileGetLineNumber</a></h3>
<p class="description">Get the current line number in an IPP data file.</p>
<p class="code">
-int ippFileGetLineNumber(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
+<span class="reserved">int</span> ippFileGetLineNumber(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileGetVar">ippFileGetVar</a></h3>
<p class="description">Get the value of an IPP data file variable.</p>
<p class="code">
-const char *ippFileGetVar(<a href="#ipp_file_t">ipp_file_t</a> *file, const char *name);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippFileGetVar(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileNew">ippFileNew</a></h3>
<p class="description">Create a new IPP data file object for reading or writing.</p>
<p class="code">
-<a href="#ipp_file_t">ipp_file_t</a> *ippFileNew(<a href="#ipp_file_t">ipp_file_t</a> *parent, <a href="#ipp_fattr_cb_t">ipp_fattr_cb_t</a> attr_cb, <a href="#ipp_ferror_cb_t">ipp_ferror_cb_t</a> error_cb, void *cb_data);</p>
+<a href="#ipp_file_t">ipp_file_t</a> *ippFileNew(<a href="#ipp_file_t">ipp_file_t</a> *parent, <a href="#ipp_fattr_cb_t">ipp_fattr_cb_t</a> attr_cb, <a href="#ipp_ferror_cb_t">ipp_ferror_cb_t</a> error_cb, <span class="reserved">void</span> *cb_data);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>parent</th>
<h3 class="function"><a id="ippFileOpen">ippFileOpen</a></h3>
<p class="description">Open an IPP data file for reading or writing.</p>
<p class="code">
-bool ippFileOpen(<a href="#ipp_file_t">ipp_file_t</a> *file, const char *filename, const char *mode);</p>
+<span class="reserved">bool</span> ippFileOpen(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">const</span> <span class="reserved">char</span> *filename, <span class="reserved">const</span> <span class="reserved">char</span> *mode);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileRead">ippFileRead</a></h3>
<p class="description">Read an IPP data file.</p>
<p class="code">
-bool ippFileRead(<a href="#ipp_file_t">ipp_file_t</a> *file, <a href="#ipp_ftoken_cb_t">ipp_ftoken_cb_t</a> token_cb, bool with_groups);</p>
+<span class="reserved">bool</span> ippFileRead(<a href="#ipp_file_t">ipp_file_t</a> *file, <a href="#ipp_ftoken_cb_t">ipp_ftoken_cb_t</a> token_cb, <span class="reserved">bool</span> with_groups);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileReadToken">ippFileReadToken</a></h3>
<p class="description">Read a token from an IPP data file.</p>
<p class="code">
-bool ippFileReadToken(<a href="#ipp_file_t">ipp_file_t</a> *file, char *token, size_t tokensize);</p>
+<span class="reserved">bool</span> ippFileReadToken(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">char</span> *token, size_t tokensize);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileRestorePosition">ippFileRestorePosition</a></h3>
<p class="description">Restore the previous position in an IPP data file.</p>
<p class="code">
-bool ippFileRestorePosition(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
+<span class="reserved">bool</span> ippFileRestorePosition(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileSavePosition">ippFileSavePosition</a></h3>
<p class="description">Save the current position in an IPP data file.</p>
<p class="code">
-bool ippFileSavePosition(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
+<span class="reserved">bool</span> ippFileSavePosition(<a href="#ipp_file_t">ipp_file_t</a> *file);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileSetAttributes">ippFileSetAttributes</a></h3>
<p class="description">Set the attributes for an IPP data file.</p>
<p class="code">
-bool ippFileSetAttributes(<a href="#ipp_file_t">ipp_file_t</a> *file, <a href="#ipp_t">ipp_t</a> *attrs);</p>
+<span class="reserved">bool</span> ippFileSetAttributes(<a href="#ipp_file_t">ipp_file_t</a> *file, <a href="#ipp_t">ipp_t</a> *attrs);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileSetGroupTag">ippFileSetGroupTag</a></h3>
<p class="description">Set the group tag for an IPP data file.</p>
<p class="code">
-bool ippFileSetGroupTag(<a href="#ipp_file_t">ipp_file_t</a> *file, ipp_tag_t group_tag);</p>
+<span class="reserved">bool</span> ippFileSetGroupTag(<a href="#ipp_file_t">ipp_file_t</a> *file, ipp_tag_t group_tag);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileSetVar">ippFileSetVar</a></h3>
<p class="description">Set an IPP data file variable to a constant value.</p>
<p class="code">
-bool ippFileSetVar(<a href="#ipp_file_t">ipp_file_t</a> *file, const char *name, const char *value);</p>
+<span class="reserved">bool</span> ippFileSetVar(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *value);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileSetVarf">ippFileSetVarf</a></h3>
<p class="description">Set an IPP data file variable to a formatted value.</p>
<p class="code">
-bool ippFileSetVarf(<a href="#ipp_file_t">ipp_file_t</a> *file, const char *name, const char *value, ...);</p>
+<span class="reserved">bool</span> ippFileSetVarf(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">const</span> <span class="reserved">char</span> *value, ...);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileWriteAttributes">ippFileWriteAttributes</a></h3>
<p class="description">Write an IPP message to an IPP data file.</p>
<p class="code">
-bool ippFileWriteAttributes(<a href="#ipp_file_t">ipp_file_t</a> *file, <a href="#ipp_t">ipp_t</a> *ipp, bool with_groups);</p>
+<span class="reserved">bool</span> ippFileWriteAttributes(<a href="#ipp_file_t">ipp_file_t</a> *file, <a href="#ipp_t">ipp_t</a> *ipp, <span class="reserved">bool</span> with_groups);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileWriteComment">ippFileWriteComment</a></h3>
<p class="description">Write a comment to an IPP data file.</p>
<p class="code">
-bool ippFileWriteComment(<a href="#ipp_file_t">ipp_file_t</a> *file, const char *comment, ...);</p>
+<span class="reserved">bool</span> ippFileWriteComment(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">const</span> <span class="reserved">char</span> *comment, ...);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileWriteToken">ippFileWriteToken</a></h3>
<p class="description">Write a token or value string to an IPP data file.</p>
<p class="code">
-bool ippFileWriteToken(<a href="#ipp_file_t">ipp_file_t</a> *file, const char *token);</p>
+<span class="reserved">bool</span> ippFileWriteToken(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">const</span> <span class="reserved">char</span> *token);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFileWriteTokenf">ippFileWriteTokenf</a></h3>
<p class="description">Write a formatted token or value string to an IPP data file.</p>
<p class="code">
-bool ippFileWriteTokenf(<a href="#ipp_file_t">ipp_file_t</a> *file, const char *token, ...);</p>
+<span class="reserved">bool</span> ippFileWriteTokenf(<a href="#ipp_file_t">ipp_file_t</a> *file, <span class="reserved">const</span> <span class="reserved">char</span> *token, ...);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>file</th>
<h3 class="function"><a id="ippFindAttribute">ippFindAttribute</a></h3>
<p class="description">Find a named attribute in a request.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFindAttribute(<a href="#ipp_t">ipp_t</a> *ipp, const char *name, ipp_tag_t type);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFindAttribute(<a href="#ipp_t">ipp_t</a> *ipp, <span class="reserved">const</span> <span class="reserved">char</span> *name, ipp_tag_t type);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><a id="ippFindNextAttribute">ippFindNextAttribute</a></h3>
<p class="description">Find the next named attribute in a request.</p>
<p class="code">
-<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFindNextAttribute(<a href="#ipp_t">ipp_t</a> *ipp, const char *name, ipp_tag_t type);</p>
+<a href="#ipp_attribute_t">ipp_attribute_t</a> *ippFindNextAttribute(<a href="#ipp_t">ipp_t</a> *ipp, <span class="reserved">const</span> <span class="reserved">char</span> *name, ipp_tag_t type);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippGetBoolean">ippGetBoolean</a></h3>
<p class="description">Get a boolean value for an attribute.</p>
<p class="code">
-int ippGetBoolean(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int element);</p>
+<span class="reserved">int</span> ippGetBoolean(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> element);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attr</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippGetCollection">ippGetCollection</a></h3>
<p class="description">Get a collection value for an attribute.</p>
<p class="code">
-<a href="#ipp_t">ipp_t</a> *ippGetCollection(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int element);</p>
+<a href="#ipp_t">ipp_t</a> *ippGetCollection(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> element);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attr</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippGetCount">ippGetCount</a></h3>
<p class="description">Get the number of values in an attribute.</p>
<p class="code">
-int ippGetCount(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
+<span class="reserved">int</span> ippGetCount(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attr</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippGetDate">ippGetDate</a></h3>
<p class="description">Get a dateTime value for an attribute.</p>
<p class="code">
-const <a href="#ipp_uchar_t">ipp_uchar_t</a> *ippGetDate(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int element);</p>
+<span class="reserved">const</span> <a href="#ipp_uchar_t">ipp_uchar_t</a> *ippGetDate(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> element);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attr</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippGetInteger">ippGetInteger</a></h3>
<p class="description">Get the integer/enum value for an attribute.</p>
<p class="code">
-int ippGetInteger(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int element);</p>
+<span class="reserved">int</span> ippGetInteger(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> element);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attr</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippGetName">ippGetName</a></h3>
<p class="description">Get the attribute name.</p>
<p class="code">
-const char *ippGetName(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippGetName(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attr</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="ippGetOctetString">ippGetOctetString</a></h3>
<p class="description">Get an octetString value from an IPP attribute.</p>
<p class="code">
-void *ippGetOctetString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int element, int *datalen);</p>
+<span class="reserved">void</span> *ippGetOctetString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> element, <span class="reserved">int</span> *datalen);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attr</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="ippGetPort">ippGetPort</a></h3>
<p class="description">Return the default IPP port number.</p>
<p class="code">
-int ippGetPort(void);</p>
+<span class="reserved">int</span> ippGetPort(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">Port number</p>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippGetRange">ippGetRange</a></h3>
<p class="description">Get a rangeOfInteger value from an attribute.</p>
<p class="code">
-int ippGetRange(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int element, int *uppervalue);</p>
+<span class="reserved">int</span> ippGetRange(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> element, <span class="reserved">int</span> *uppervalue);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attr</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippGetRequestId">ippGetRequestId</a></h3>
<p class="description">Get the request ID from an IPP message.</p>
<p class="code">
-int ippGetRequestId(<a href="#ipp_t">ipp_t</a> *ipp);</p>
+<span class="reserved">int</span> ippGetRequestId(<a href="#ipp_t">ipp_t</a> *ipp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippGetResolution">ippGetResolution</a></h3>
<p class="description">Get a resolution value for an attribute.</p>
<p class="code">
-int ippGetResolution(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int element, int *yres, <a href="#ipp_res_t">ipp_res_t</a> *units);</p>
+<span class="reserved">int</span> ippGetResolution(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> element, <span class="reserved">int</span> *yres, <a href="#ipp_res_t">ipp_res_t</a> *units);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attr</th>
<h3 class="function"><a id="ippGetString">ippGetString</a></h3>
<p class="description"></p>
<p class="code">
-const char *ippGetString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, int element, const char **language);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippGetString(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr, <span class="reserved">int</span> element, <span class="reserved">const</span> <span class="reserved">char</span> **language);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attr</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippGetVersion">ippGetVersion</a></h3>
<p class="description">Get the major and minor version number from an IPP message.</p>
<p class="code">
-int ippGetVersion(<a href="#ipp_t">ipp_t</a> *ipp, int *minor);</p>
+<span class="reserved">int</span> ippGetVersion(<a href="#ipp_t">ipp_t</a> *ipp, <span class="reserved">int</span> *minor);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><a id="ippNew">ippNew</a></h3>
<p class="description">Allocate a new IPP message.</p>
<p class="code">
-<a href="#ipp_t">ipp_t</a> *ippNew(void);</p>
+<a href="#ipp_t">ipp_t</a> *ippNew(<span class="reserved">void</span>);</p>
<h4 class="returnvalue">Return Value</h4>
<p class="description">New IPP message</p>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="ippNewRequest">ippNewRequest</a></h3>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="ippOpString">ippOpString</a></h3>
<p class="description">Return a name for the given operation id.</p>
<p class="code">
-const char *ippOpString(<a href="#ipp_op_t">ipp_op_t</a> op);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippOpString(<a href="#ipp_op_t">ipp_op_t</a> op);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>op</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="ippOpValue">ippOpValue</a></h3>
<p class="description">Return an operation id for the given name.</p>
<p class="code">
-<a href="#ipp_op_t">ipp_op_t</a> ippOpValue(const char *name);</p>
+<a href="#ipp_op_t">ipp_op_t</a> ippOpValue(<span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>name</th>
<h3 class="function"><span class="info"> CUPS 1.1.19/macOS 10.3 </span><a id="ippReadFile">ippReadFile</a></h3>
<p class="description">Read data for an IPP message from a file.</p>
<p class="code">
-<a href="#ipp_state_t">ipp_state_t</a> ippReadFile(int fd, <a href="#ipp_t">ipp_t</a> *ipp);</p>
+<a href="#ipp_state_t">ipp_state_t</a> ippReadFile(<span class="reserved">int</span> fd, <a href="#ipp_t">ipp_t</a> *ipp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fd</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="ippReadIO">ippReadIO</a></h3>
<p class="description">Read data for an IPP message.</p>
<p class="code">
-<a href="#ipp_state_t">ipp_state_t</a> ippReadIO(void *src, <a href="#ipp_io_cb_t">ipp_io_cb_t</a> cb, int blocking, <a href="#ipp_t">ipp_t</a> *parent, <a href="#ipp_t">ipp_t</a> *ipp);</p>
+<a href="#ipp_state_t">ipp_state_t</a> ippReadIO(<span class="reserved">void</span> *src, <a href="#ipp_io_cb_t">ipp_io_cb_t</a> cb, <span class="reserved">int</span> blocking, <a href="#ipp_t">ipp_t</a> *parent, <a href="#ipp_t">ipp_t</a> *ipp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>src</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="ippRestore">ippRestore</a></h3>
<p class="description">Restore a previously saved find position.</p>
<p class="code">
-void ippRestore(<a href="#ipp_t">ipp_t</a> *ipp);</p>
+<span class="reserved">void</span> ippRestore(<a href="#ipp_t">ipp_t</a> *ipp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 2.5 </span><a id="ippSave">ippSave</a></h3>
<p class="description">Save the current find position.</p>
<p class="code">
-void ippSave(<a href="#ipp_t">ipp_t</a> *ipp);</p>
+<span class="reserved">void</span> ippSave(<a href="#ipp_t">ipp_t</a> *ipp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippSetBoolean">ippSetBoolean</a></h3>
<p class="description">Set a boolean value in an attribute.</p>
<p class="code">
-int ippSetBoolean(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, int boolvalue);</p>
+<span class="reserved">int</span> ippSetBoolean(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">int</span> boolvalue);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippSetCollection">ippSetCollection</a></h3>
<p class="description">Set a collection value in an attribute.</p>
<p class="code">
-int ippSetCollection(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, <a href="#ipp_t">ipp_t</a> *colvalue);</p>
+<span class="reserved">int</span> ippSetCollection(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <a href="#ipp_t">ipp_t</a> *colvalue);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippSetDate">ippSetDate</a></h3>
<p class="description">Set a dateTime value in an attribute.</p>
<p class="code">
-int ippSetDate(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, const <a href="#ipp_uchar_t">ipp_uchar_t</a> *datevalue);</p>
+<span class="reserved">int</span> ippSetDate(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">const</span> <a href="#ipp_uchar_t">ipp_uchar_t</a> *datevalue);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippSetGroupTag">ippSetGroupTag</a></h3>
<p class="description">Set the group tag of an attribute.</p>
<p class="code">
-int ippSetGroupTag(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, ipp_tag_t group_tag);</p>
+<span class="reserved">int</span> ippSetGroupTag(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, ipp_tag_t group_tag);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippSetInteger">ippSetInteger</a></h3>
<p class="description">Set an integer or enum value in an attribute.</p>
<p class="code">
-int ippSetInteger(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, int intvalue);</p>
+<span class="reserved">int</span> ippSetInteger(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">int</span> intvalue);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippSetName">ippSetName</a></h3>
<p class="description">Set the name of an attribute.</p>
<p class="code">
-int ippSetName(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, const char *name);</p>
+<span class="reserved">int</span> ippSetName(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="ippSetOctetString">ippSetOctetString</a></h3>
<p class="description">Set an octetString value in an IPP attribute.</p>
<p class="code">
-int ippSetOctetString(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, const void *data, int datalen);</p>
+<span class="reserved">int</span> ippSetOctetString(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">const</span> <span class="reserved">void</span> *data, <span class="reserved">int</span> datalen);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippSetOperation">ippSetOperation</a></h3>
<p class="description">Set the operation ID in an IPP request message.</p>
<p class="code">
-int ippSetOperation(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_op_t">ipp_op_t</a> op);</p>
+<span class="reserved">int</span> ippSetOperation(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_op_t">ipp_op_t</a> op);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><a id="ippSetPort">ippSetPort</a></h3>
<p class="description">Set the default port number.</p>
<p class="code">
-void ippSetPort(int p);</p>
+<span class="reserved">void</span> ippSetPort(<span class="reserved">int</span> p);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>p</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippSetRange">ippSetRange</a></h3>
<p class="description">Set a rangeOfInteger value in an attribute.</p>
<p class="code">
-int ippSetRange(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, int lowervalue, int uppervalue);</p>
+<span class="reserved">int</span> ippSetRange(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">int</span> lowervalue, <span class="reserved">int</span> uppervalue);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippSetRequestId">ippSetRequestId</a></h3>
<p class="description">Set the request ID in an IPP message.</p>
<p class="code">
-int ippSetRequestId(<a href="#ipp_t">ipp_t</a> *ipp, int request_id);</p>
+<span class="reserved">int</span> ippSetRequestId(<a href="#ipp_t">ipp_t</a> *ipp, <span class="reserved">int</span> request_id);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippSetResolution">ippSetResolution</a></h3>
<p class="description">Set a resolution value in an attribute.</p>
<p class="code">
-int ippSetResolution(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, <a href="#ipp_res_t">ipp_res_t</a> unitsvalue, int xresvalue, int yresvalue);</p>
+<span class="reserved">int</span> ippSetResolution(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <a href="#ipp_res_t">ipp_res_t</a> unitsvalue, <span class="reserved">int</span> xresvalue, <span class="reserved">int</span> yresvalue);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippSetState">ippSetState</a></h3>
<p class="description">Set the current state of the IPP message.</p>
<p class="code">
-int ippSetState(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_state_t">ipp_state_t</a> state);</p>
+<span class="reserved">int</span> ippSetState(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_state_t">ipp_state_t</a> state);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippSetStatusCode">ippSetStatusCode</a></h3>
<p class="description">Set the status code in an IPP response or event message.</p>
<p class="code">
-int ippSetStatusCode(<a href="#ipp_t">ipp_t</a> *ipp, ipp_status_t status);</p>
+<span class="reserved">int</span> ippSetStatusCode(<a href="#ipp_t">ipp_t</a> *ipp, ipp_status_t status);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippSetString">ippSetString</a></h3>
<p class="description">Set a string value in an attribute.</p>
<p class="code">
-int ippSetString(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, const char *strvalue);</p>
+<span class="reserved">int</span> ippSetString(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">const</span> <span class="reserved">char</span> *strvalue);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="ippSetStringf">ippSetStringf</a></h3>
<p class="description">Set a formatted string value of an attribute.</p>
<p class="code">
-int ippSetStringf(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, const char *format, ...);</p>
+<span class="reserved">int</span> ippSetStringf(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">const</span> <span class="reserved">char</span> *format, ...);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="ippSetStringfv">ippSetStringfv</a></h3>
<p class="description">Set a formatted string value of an attribute.</p>
<p class="code">
-int ippSetStringfv(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, int element, const char *format, va_list ap);</p>
+<span class="reserved">int</span> ippSetStringfv(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, <span class="reserved">int</span> element, <span class="reserved">const</span> <span class="reserved">char</span> *format, va_list ap);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippSetValueTag">ippSetValueTag</a></h3>
<p class="description">Set the value tag of an attribute.</p>
<p class="code">
-int ippSetValueTag(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, ipp_tag_t value_tag);</p>
+<span class="reserved">int</span> ippSetValueTag(<a href="#ipp_t">ipp_t</a> *ipp, <a href="#ipp_attribute_t">ipp_attribute_t</a> **attr, ipp_tag_t value_tag);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.6/macOS 10.8 </span><a id="ippSetVersion">ippSetVersion</a></h3>
<p class="description">Set the version number in an IPP message.</p>
<p class="code">
-int ippSetVersion(<a href="#ipp_t">ipp_t</a> *ipp, int major, int minor);</p>
+<span class="reserved">int</span> ippSetVersion(<a href="#ipp_t">ipp_t</a> *ipp, <span class="reserved">int</span> major, <span class="reserved">int</span> minor);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 2.0/OS 10.10 </span><a id="ippStateString">ippStateString</a></h3>
<p class="description">Return the name corresponding to a state value.</p>
<p class="code">
-const char *ippStateString(<a href="#ipp_state_t">ipp_state_t</a> state);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippStateString(<a href="#ipp_state_t">ipp_state_t</a> state);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>state</th>
<h3 class="function"><span class="info"> CUPS 1.4/macOS 10.6 </span><a id="ippTagString">ippTagString</a></h3>
<p class="description">Return the tag name corresponding to a tag value.</p>
<p class="code">
-const char *ippTagString(ipp_tag_t tag);</p>
+<span class="reserved">const</span> <span class="reserved">char</span> *ippTagString(ipp_tag_t tag);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>tag</th>
<h3 class="function"><span class="info"> CUPS 1.4/macOS 10.6 </span><a id="ippTagValue">ippTagValue</a></h3>
<p class="description">Return the tag value corresponding to a tag name.</p>
<p class="code">
-ipp_tag_t ippTagValue(const char *name);</p>
+ipp_tag_t ippTagValue(<span class="reserved">const</span> <span class="reserved">char</span> *name);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>name</th>
<h3 class="function"><a id="ippTimeToDate">ippTimeToDate</a></h3>
<p class="description">Convert from time in seconds to RFC 2579 format.</p>
<p class="code">
-const <a href="#ipp_uchar_t">ipp_uchar_t</a> *ippTimeToDate(time_t t);</p>
+<span class="reserved">const</span> <a href="#ipp_uchar_t">ipp_uchar_t</a> *ippTimeToDate(time_t t);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>t</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="ippValidateAttribute">ippValidateAttribute</a></h3>
<p class="description">Validate the contents of an attribute.</p>
<p class="code">
-int ippValidateAttribute(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
+<span class="reserved">int</span> ippValidateAttribute(<a href="#ipp_attribute_t">ipp_attribute_t</a> *attr);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>attr</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="ippValidateAttributes">ippValidateAttributes</a></h3>
<p class="description">Validate all attributes in an IPP message.</p>
<p class="code">
-int ippValidateAttributes(<a href="#ipp_t">ipp_t</a> *ipp);</p>
+<span class="reserved">int</span> ippValidateAttributes(<a href="#ipp_t">ipp_t</a> *ipp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ipp</th>
<h3 class="function"><span class="info"> CUPS 1.1.19/macOS 10.3 </span><a id="ippWriteFile">ippWriteFile</a></h3>
<p class="description">Write data for an IPP message to a file.</p>
<p class="code">
-<a href="#ipp_state_t">ipp_state_t</a> ippWriteFile(int fd, <a href="#ipp_t">ipp_t</a> *ipp);</p>
+<a href="#ipp_state_t">ipp_state_t</a> ippWriteFile(<span class="reserved">int</span> fd, <a href="#ipp_t">ipp_t</a> *ipp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>fd</th>
<h3 class="function"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="ippWriteIO">ippWriteIO</a></h3>
<p class="description">Write data for an IPP message.</p>
<p class="code">
-<a href="#ipp_state_t">ipp_state_t</a> ippWriteIO(void *dst, <a href="#ipp_io_cb_t">ipp_io_cb_t</a> cb, int blocking, <a href="#ipp_t">ipp_t</a> *parent, <a href="#ipp_t">ipp_t</a> *ipp);</p>
+<a href="#ipp_state_t">ipp_state_t</a> ippWriteIO(<span class="reserved">void</span> *dst, <a href="#ipp_io_cb_t">ipp_io_cb_t</a> cb, <span class="reserved">int</span> blocking, <a href="#ipp_t">ipp_t</a> *parent, <a href="#ipp_t">ipp_t</a> *ipp);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>dst</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="pwgFormatSizeName">pwgFormatSizeName</a></h3>
<p class="description">Generate a PWG self-describing media size name.</p>
<p class="code">
-int pwgFormatSizeName(char *keyword, size_t keysize, const char *prefix, const char *name, int width, int length, const char *units);</p>
+<span class="reserved">int</span> pwgFormatSizeName(<span class="reserved">char</span> *keyword, size_t keysize, <span class="reserved">const</span> <span class="reserved">char</span> *prefix, <span class="reserved">const</span> <span class="reserved">char</span> *name, <span class="reserved">int</span> width, <span class="reserved">int</span> length, <span class="reserved">const</span> <span class="reserved">char</span> *units);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>keyword</th>
<p class="description">Initialize a pwg_size_t structure using IPP Job Template
attributes.</p>
<p class="code">
-int pwgInitSize(<a href="#pwg_size_t">pwg_size_t</a> *size, <a href="#ipp_t">ipp_t</a> *job, int *margins_set);</p>
+<span class="reserved">int</span> pwgInitSize(<a href="#pwg_size_t">pwg_size_t</a> *size, <a href="#ipp_t">ipp_t</a> *job, <span class="reserved">int</span> *margins_set);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>size</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="pwgMediaForLegacy">pwgMediaForLegacy</a></h3>
<p class="description">Find a PWG media size by ISO/IPP legacy name.</p>
<p class="code">
-<a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForLegacy(const char *legacy);</p>
+<a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForLegacy(<span class="reserved">const</span> <span class="reserved">char</span> *legacy);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>legacy</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="pwgMediaForPPD">pwgMediaForPPD</a></h3>
<p class="description">Find a PWG media size by Adobe PPD name.</p>
<p class="code">
-<a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForPPD(const char *ppd);</p>
+<a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForPPD(<span class="reserved">const</span> <span class="reserved">char</span> *ppd);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>ppd</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="pwgMediaForPWG">pwgMediaForPWG</a></h3>
<p class="description">Find a PWG media size by 5101.1 self-describing name.</p>
<p class="code">
-<a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForPWG(const char *pwg);</p>
+<a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForPWG(<span class="reserved">const</span> <span class="reserved">char</span> *pwg);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>pwg</th>
<h3 class="function"><span class="info"> CUPS 1.7/macOS 10.9 </span><a id="pwgMediaForSize">pwgMediaForSize</a></h3>
<p class="description">Get the PWG media size for the given dimensions.</p>
<p class="code">
-<a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForSize(int width, int length);</p>
+<a href="#pwg_media_t">pwg_media_t</a> *pwgMediaForSize(<span class="reserved">int</span> width, <span class="reserved">int</span> length);</p>
<h4 class="parameters">Parameters</h4>
<table class="list"><tbody>
<tr><th>width</th>
<p class="code">
typedef const char *(*)(http_t *http, const char *realm, const char *scope, const char *resource, void *user_data)cups_oauth_cb_t;
</p>
+<h3 class="typedef"><a id="cups_ogrant_t">cups_ogrant_t</a></h3>
+<p class="description">OAuth Grant Types</p>
+<p class="code">
+typedef enum <a href="#cups_ogrant_e">cups_ogrant_e</a> cups_ogrant_t;
+</p>
<h3 class="typedef"><a id="cups_option_t">cups_option_t</a></h3>
<p class="description">Printer Options</p>
<p class="code">
<p class="code">
typedef enum <a href="#cups_whichjobs_e">cups_whichjobs_e</a> cups_whichjobs_t;
</p>
-<h3 class="typedef"><a id="http_addr_t"><span class="info"> CUPS 1.2/macOS 10.5 </span>http_addr_t</a></h3>
+<h3 class="typedef"><a id="http_addr_t"><span class="info"> CUPS 1.2 </span>http_addr_t</a></h3>
<p class="description">Socket address union, which makes using IPv6 and other address types easier and more portable. </p>
<p class="code">
typedef union _http_addr_u http_addr_t;
<p class="code">
typedef struct _http_s http_t;
</p>
-<h3 class="typedef"><a id="http_timeout_cb_t"><span class="info"> CUPS 1.5/macOS 10.7 </span>http_timeout_cb_t</a></h3>
+<h3 class="typedef"><a id="http_timeout_cb_t"><span class="info"> CUPS 1.5 </span>http_timeout_cb_t</a></h3>
<p class="description">HTTP timeout callback </p>
<p class="code">
typedef int(*)(http_t *http, void *user_data)http_timeout_cb_t;
<h2 class="title"><a id="STRUCTURES">Structures</a></h2>
<h3 class="struct"><a id="cups_dentry_s">cups_dentry_s</a></h3>
<p class="description">Directory entry type</p>
-<p class="code">struct cups_dentry_s {<br>
-    struct stat fileinfo;<br>
-    char filename[260];<br>
+<p class="code"><span class="reserved">struct</span> cups_dentry_s {<br>
+    <span class="reserved">struct</span> stat fileinfo;<br>
+    <span class="reserved">char</span> filename[260];<br>
};</p>
<h4 class="members">Members</h4>
<table class="list"><tbody>
</tbody></table>
<h3 class="struct"><a id="cups_dest_s">cups_dest_s</a></h3>
<p class="description">Destination</p>
-<p class="code">struct cups_dest_s {<br>
-    char *name, *instance;<br>
-    int is_default;<br>
-    int num_options;<br>
+<p class="code"><span class="reserved">struct</span> cups_dest_s {<br>
+    <span class="reserved">char</span> *name, *instance;<br>
+    <span class="reserved">int</span> is_default;<br>
+    <span class="reserved">int</span> num_options;<br>
    <a href="#cups_option_t">cups_option_t</a> *options;<br>
};</p>
<h4 class="members">Members</h4>
</tbody></table>
<h3 class="struct"><a id="cups_job_s">cups_job_s</a></h3>
<p class="description">Job information</p>
-<p class="code">struct cups_job_s {<br>
+<p class="code"><span class="reserved">struct</span> cups_job_s {<br>
    time_t completed_time;<br>
    time_t creation_time;<br>
-    char *dest;<br>
-    char *format;<br>
-    int id;<br>
-    int priority;<br>
+    <span class="reserved">char</span> *dest;<br>
+    <span class="reserved">char</span> *format;<br>
+    <span class="reserved">int</span> id;<br>
+    <span class="reserved">int</span> priority;<br>
    time_t processing_time;<br>
-    int size;<br>
+    <span class="reserved">int</span> size;<br>
    <a href="#ipp_jstate_t">ipp_jstate_t</a> state;<br>
-    char *title;<br>
-    char *user;<br>
+    <span class="reserved">char</span> *title;<br>
+    <span class="reserved">char</span> *user;<br>
};</p>
<h4 class="members">Members</h4>
<table class="list"><tbody>
</tbody></table>
<h3 class="struct"><a id="cups_lang_s">cups_lang_s</a></h3>
<p class="description">Language Cache Structure</p>
-<p class="code">struct cups_lang_s {<br>
+<p class="code"><span class="reserved">struct</span> cups_lang_s {<br>
    <a href="#cups_encoding_t">cups_encoding_t</a> encoding;<br>
-    char language[16];<br>
-    struct <a href="#cups_lang_s">cups_lang_s</a> *next;<br>
-    int used;<br>
+    <span class="reserved">char</span> language[16];<br>
+    <span class="reserved">struct</span> <a href="#cups_lang_s">cups_lang_s</a> *next;<br>
+    <span class="reserved">int</span> used;<br>
};</p>
<h4 class="members">Members</h4>
<table class="list"><tbody>
</tbody></table>
<h3 class="struct"><span class="info"> CUPS 2.5 </span><a id="cups_media_s">cups_media_s</a></h3>
<p class="description">Media information </p>
-<p class="code">struct cups_media_s {<br>
-    int width, length, bottom, left, right, top;<br>
-    char media[128], color[128], source[128], type[128];<br>
+<p class="code"><span class="reserved">struct</span> cups_media_s {<br>
+    <span class="reserved">int</span> width, length, bottom, left, right, top;<br>
+    <span class="reserved">char</span> media[128], color[128], source[128], type[128];<br>
};</p>
<h4 class="members">Members</h4>
<table class="list"><tbody>
</tbody></table>
<h3 class="struct"><a id="cups_option_s">cups_option_s</a></h3>
<p class="description">Printer Options</p>
-<p class="code">struct cups_option_s {<br>
-    char *name;<br>
-    char *value;<br>
+<p class="code"><span class="reserved">struct</span> cups_option_s {<br>
+    <span class="reserved">char</span> *name;<br>
+    <span class="reserved">char</span> *value;<br>
};</p>
<h4 class="members">Members</h4>
<table class="list"><tbody>
</tbody></table>
<h3 class="struct"><span class="info"> CUPS 1.2/macOS 10.5 </span><a id="cups_page_header2_s">cups_page_header2_s</a></h3>
<p class="description">Version 2 page header </p>
-<p class="code">struct cups_page_header2_s {<br>
-    unsigned AdvanceDistance;<br>
+<p class="code"><span class="reserved">struct</span> cups_page_header2_s {<br>
+    <span class="reserved">unsigned</span> AdvanceDistance;<br>
    <a href="#cups_adv_t">cups_adv_t</a> AdvanceMedia;<br>
    <a href="#cups_bool_t">cups_bool_t</a> Collate;<br>
    <a href="#cups_cut_t">cups_cut_t</a> CutMedia;<br>
    <a href="#cups_bool_t">cups_bool_t</a> Duplex;<br>
-    unsigned HWResolution[2];<br>
-    unsigned ImagingBoundingBox[4];<br>
+    <span class="reserved">unsigned</span> HWResolution[2];<br>
+    <span class="reserved">unsigned</span> ImagingBoundingBox[4];<br>
    <a href="#cups_bool_t">cups_bool_t</a> InsertSheet;<br>
    <a href="#cups_jog_t">cups_jog_t</a> Jog;<br>
    <a href="#cups_edge_t">cups_edge_t</a> LeadingEdge;<br>
    <a href="#cups_bool_t">cups_bool_t</a> ManualFeed;<br>
-    unsigned Margins[2];<br>
-    char MediaClass[64];<br>
-    char MediaColor[64];<br>
-    unsigned MediaPosition;<br>
-    char MediaType[64];<br>
-    unsigned MediaWeight;<br>
+    <span class="reserved">unsigned</span> Margins[2];<br>
+    <span class="reserved">char</span> MediaClass[64];<br>
+    <span class="reserved">char</span> MediaColor[64];<br>
+    <span class="reserved">unsigned</span> MediaPosition;<br>
+    <span class="reserved">char</span> MediaType[64];<br>
+    <span class="reserved">unsigned</span> MediaWeight;<br>
    <a href="#cups_bool_t">cups_bool_t</a> MirrorPrint;<br>
    <a href="#cups_bool_t">cups_bool_t</a> NegativePrint;<br>
-    unsigned NumCopies;<br>
+    <span class="reserved">unsigned</span> NumCopies;<br>
    <a href="#cups_orient_t">cups_orient_t</a> Orientation;<br>
    <a href="#cups_bool_t">cups_bool_t</a> OutputFaceUp;<br>
-    char OutputType[64];<br>
-    unsigned PageSize[2];<br>
+    <span class="reserved">char</span> OutputType[64];<br>
+    <span class="reserved">unsigned</span> PageSize[2];<br>
    <a href="#cups_bool_t">cups_bool_t</a> Separations;<br>
    <a href="#cups_bool_t">cups_bool_t</a> TraySwitch;<br>
    <a href="#cups_bool_t">cups_bool_t</a> Tumble;<br>
-    unsigned cupsBitsPerColor;<br>
-    unsigned cupsBitsPerPixel;<br>
-    float cupsBorderlessScalingFactor;<br>
-    unsigned cupsBytesPerLine;<br>
+    <span class="reserved">unsigned</span> cupsBitsPerColor;<br>
+    <span class="reserved">unsigned</span> cupsBitsPerPixel;<br>
+    <span class="reserved">float</span> cupsBorderlessScalingFactor;<br>
+    <span class="reserved">unsigned</span> cupsBytesPerLine;<br>
    <a href="#cups_order_t">cups_order_t</a> cupsColorOrder;<br>
    <a href="#cups_cspace_t">cups_cspace_t</a> cupsColorSpace;<br>
-    unsigned cupsCompression;<br>
-    unsigned cupsHeight;<br>
-    float cupsImagingBBox[4];<br>
-    unsigned cupsInteger[16];<br>
-    char cupsMarkerType[64];<br>
-    unsigned cupsMediaType;<br>
-    unsigned cupsNumColors;<br>
-    char cupsPageSizeName[64];<br>
-    float cupsPageSize[2];<br>
-    float cupsReal[16];<br>
-    char cupsRenderingIntent[64];<br>
-    unsigned cupsRowCount;<br>
-    unsigned cupsRowFeed;<br>
-    unsigned cupsRowStep;<br>
-    char cupsString[16][64];<br>
-    unsigned cupsWidth;<br>
+    <span class="reserved">unsigned</span> cupsCompression;<br>
+    <span class="reserved">unsigned</span> cupsHeight;<br>
+    <span class="reserved">float</span> cupsImagingBBox[4];<br>
+    <span class="reserved">unsigned</span> cupsInteger[16];<br>
+    <span class="reserved">char</span> cupsMarkerType[64];<br>
+    <span class="reserved">unsigned</span> cupsMediaType;<br>
+    <span class="reserved">unsigned</span> cupsNumColors;<br>
+    <span class="reserved">char</span> cupsPageSizeName[64];<br>
+    <span class="reserved">float</span> cupsPageSize[2];<br>
+    <span class="reserved">float</span> cupsReal[16];<br>
+    <span class="reserved">char</span> cupsRenderingIntent[64];<br>
+    <span class="reserved">unsigned</span> cupsRowCount;<br>
+    <span class="reserved">unsigned</span> cupsRowFeed;<br>
+    <span class="reserved">unsigned</span> cupsRowStep;<br>
+    <span class="reserved">char</span> cupsString[16][64];<br>
+    <span class="reserved">unsigned</span> cupsWidth;<br>
};</p>
<h4 class="members">Members</h4>
<table class="list"><tbody>
</tbody></table>
<h3 class="struct"><span class="info"> DEPRECATED </span><a id="cups_page_header_s">cups_page_header_s</a></h3>
<p class="description">Version 1 page header </p>
-<p class="code">struct cups_page_header_s {<br>
-    unsigned AdvanceDistance;<br>
+<p class="code"><span class="reserved">struct</span> cups_page_header_s {<br>
+    <span class="reserved">unsigned</span> AdvanceDistance;<br>
    <a href="#cups_adv_t">cups_adv_t</a> AdvanceMedia;<br>
    <a href="#cups_bool_t">cups_bool_t</a> Collate;<br>
    <a href="#cups_cut_t">cups_cut_t</a> CutMedia;<br>
    <a href="#cups_bool_t">cups_bool_t</a> Duplex;<br>
-    unsigned HWResolution[2];<br>
-    unsigned ImagingBoundingBox[4];<br>
+    <span class="reserved">unsigned</span> HWResolution[2];<br>
+    <span class="reserved">unsigned</span> ImagingBoundingBox[4];<br>
    <a href="#cups_bool_t">cups_bool_t</a> InsertSheet;<br>
    <a href="#cups_jog_t">cups_jog_t</a> Jog;<br>
    <a href="#cups_edge_t">cups_edge_t</a> LeadingEdge;<br>
    <a href="#cups_bool_t">cups_bool_t</a> ManualFeed;<br>
-    unsigned Margins[2];<br>
-    char MediaClass[64];<br>
-    char MediaColor[64];<br>
-    unsigned MediaPosition;<br>
-    char MediaType[64];<br>
-    unsigned MediaWeight;<br>
+    <span class="reserved">unsigned</span> Margins[2];<br>
+    <span class="reserved">char</span> MediaClass[64];<br>
+    <span class="reserved">char</span> MediaColor[64];<br>
+    <span class="reserved">unsigned</span> MediaPosition;<br>
+    <span class="reserved">char</span> MediaType[64];<br>
+    <span class="reserved">unsigned</span> MediaWeight;<br>
    <a href="#cups_bool_t">cups_bool_t</a> MirrorPrint;<br>
    <a href="#cups_bool_t">cups_bool_t</a> NegativePrint;<br>
-    unsigned NumCopies;<br>
+    <span class="reserved">unsigned</span> NumCopies;<br>
    <a href="#cups_orient_t">cups_orient_t</a> Orientation;<br>
    <a href="#cups_bool_t">cups_bool_t</a> OutputFaceUp;<br>
-    char OutputType[64];<br>
-    unsigned PageSize[2];<br>
+    <span class="reserved">char</span> OutputType[64];<br>
+    <span class="reserved">unsigned</span> PageSize[2];<br>
    <a href="#cups_bool_t">cups_bool_t</a> Separations;<br>
    <a href="#cups_bool_t">cups_bool_t</a> TraySwitch;<br>
    <a href="#cups_bool_t">cups_bool_t</a> Tumble;<br>
-    unsigned cupsBitsPerColor;<br>
-    unsigned cupsBitsPerPixel;<br>
-    unsigned cupsBytesPerLine;<br>
+    <span class="reserved">unsigned</span> cupsBitsPerColor;<br>
+    <span class="reserved">unsigned</span> cupsBitsPerPixel;<br>
+    <span class="reserved">unsigned</span> cupsBytesPerLine;<br>
    <a href="#cups_order_t">cups_order_t</a> cupsColorOrder;<br>
    <a href="#cups_cspace_t">cups_cspace_t</a> cupsColorSpace;<br>
-    unsigned cupsCompression;<br>
-    unsigned cupsHeight;<br>
-    unsigned cupsMediaType;<br>
-    unsigned cupsRowCount;<br>
-    unsigned cupsRowFeed;<br>
-    unsigned cupsRowStep;<br>
-    unsigned cupsWidth;<br>
+    <span class="reserved">unsigned</span> cupsCompression;<br>
+    <span class="reserved">unsigned</span> cupsHeight;<br>
+    <span class="reserved">unsigned</span> cupsMediaType;<br>
+    <span class="reserved">unsigned</span> cupsRowCount;<br>
+    <span class="reserved">unsigned</span> cupsRowFeed;<br>
+    <span class="reserved">unsigned</span> cupsRowStep;<br>
+    <span class="reserved">unsigned</span> cupsWidth;<br>
};</p>
<h4 class="members">Members</h4>
<table class="list"><tbody>
</tbody></table>
<h3 class="struct"><span class="info"> DEPRECATED </span><a id="cups_size_s">cups_size_s</a></h3>
<p class="description">Media Size </p>
-<p class="code">struct cups_size_s {<br>
-    char media[128];<br>
-    int width, length, bottom, left, right, top;<br>
+<p class="code"><span class="reserved">struct</span> cups_size_s {<br>
+    <span class="reserved">char</span> media[128];<br>
+    <span class="reserved">int</span> width, length, bottom, left, right, top;<br>
};</p>
<h4 class="members">Members</h4>
<table class="list"><tbody>
</tbody></table>
<h3 class="struct"><a id="pwg_media_s">pwg_media_s</a></h3>
<p class="description">Common media size data</p>
-<p class="code">struct pwg_media_s {<br>
-    int width, length;<br>
-    const char *pwg, *legacy, *ppd;<br>
+<p class="code"><span class="reserved">struct</span> pwg_media_s {<br>
+    <span class="reserved">int</span> width, length;<br>
+    <span class="reserved">const</span> <span class="reserved">char</span> *pwg, *legacy, *ppd;<br>
};</p>
<h4 class="members">Members</h4>
<table class="list"><tbody>
<tr><th>CUPS_MEDIA_FLAGS_EXACT </th><td class="description">Find an exact match for the size</td></tr>
<tr><th>CUPS_MEDIA_FLAGS_READY </th><td class="description">If the printer supports media sensing, find the size amongst the "ready" media.</td></tr>
</tbody></table>
+<h3 class="enumeration"><a id="cups_ogrant_e">cups_ogrant_e</a></h3>
+<p class="description">OAuth Grant Types</p>
+<h4 class="constants">Constants</h4>
+<table class="list"><tbody>
+<tr><th>CUPS_OGRANT_AUTHORIZATION_CODE </th><td class="description">Authorization code</td></tr>
+<tr><th>CUPS_OGRANT_DEVICE_CODE </th><td class="description">Device code</td></tr>
+<tr><th>CUPS_OGRANT_REFRESH_TOKEN </th><td class="description">Refresh token</td></tr>
+</tbody></table>
<h3 class="enumeration"><a id="cups_order_e">cups_order_e</a></h3>
<p class="description">cupsColorOrder attribute values</p>
<h4 class="constants">Constants</h4>
<p class="description">HTTP field names</p>
<h4 class="constants">Constants</h4>
<table class="list"><tbody>
-<tr><th>HTTP_FIELD_ACCEPT_ENCODING <span class="info"> CUPS 1.7/macOS 10.9 </span></th><td class="description">Accepting-Encoding field </td></tr>
+<tr><th>HTTP_FIELD_ACCEPT <span class="info"> CUPS 2.5 </span></th><td class="description">Accept field </td></tr>
+<tr><th>HTTP_FIELD_ACCEPT_ENCODING <span class="info"> CUPS 1.7 </span></th><td class="description">Accepting-Encoding field </td></tr>
<tr><th>HTTP_FIELD_ACCEPT_LANGUAGE </th><td class="description">Accept-Language field</td></tr>
<tr><th>HTTP_FIELD_ACCEPT_RANGES </th><td class="description">Accept-Ranges field</td></tr>
<tr><th>HTTP_FIELD_ACCESS_CONTROL_ALLOW_CREDENTIALS <span class="info"> CUPS 2.4 </span></th><td class="description">CORS/Fetch Access-Control-Allow-Credentials field </td></tr>
<tr><th>HTTP_FIELD_ACCESS_CONTROL_MAX_AGE <span class="info"> CUPS 2.4 </span></th><td class="description">CORS/Fetch Access-Control-Max-Age field </td></tr>
<tr><th>HTTP_FIELD_ACCESS_CONTROL_REQUEST_HEADERS <span class="info"> CUPS 2.4 </span></th><td class="description">CORS/Fetch Access-Control-Request-Headers field </td></tr>
<tr><th>HTTP_FIELD_ACCESS_CONTROL_REQUEST_METHOD <span class="info"> CUPS 2.4 </span></th><td class="description">CORS/Fetch Access-Control-Request-Method field </td></tr>
-<tr><th>HTTP_FIELD_ALLOW <span class="info"> CUPS 1.7/macOS 10.9 </span></th><td class="description">Allow field </td></tr>
+<tr><th>HTTP_FIELD_ALLOW <span class="info"> CUPS 1.7 </span></th><td class="description">Allow field </td></tr>
<tr><th>HTTP_FIELD_AUTHENTICATION_INFO <span class="info"> CUPS 2.2.9 </span></th><td class="description">Authentication-Info field </td></tr>
<tr><th>HTTP_FIELD_AUTHORIZATION </th><td class="description">Authorization field</td></tr>
<tr><th>HTTP_FIELD_CONNECTION </th><td class="description">Connection field</td></tr>
<tr><th>HTTP_FIELD_RANGE </th><td class="description">Range field</td></tr>
<tr><th>HTTP_FIELD_REFERER </th><td class="description">Referer field</td></tr>
<tr><th>HTTP_FIELD_RETRY_AFTER </th><td class="description">Retry-After field</td></tr>
-<tr><th>HTTP_FIELD_SERVER <span class="info"> CUPS 1.7/macOS 10.9 </span></th><td class="description">Server field </td></tr>
+<tr><th>HTTP_FIELD_SERVER <span class="info"> CUPS 1.7 </span></th><td class="description">Server field </td></tr>
<tr><th>HTTP_FIELD_STRICT_TRANSPORT_SECURITY <span class="info"> CUPS 2.4 </span></th><td class="description">HSTS Strict-Transport-Security field </td></tr>
<tr><th>HTTP_FIELD_TRANSFER_ENCODING </th><td class="description">Transfer-Encoding field</td></tr>
<tr><th>HTTP_FIELD_UNKNOWN </th><td class="description">Unknown field</td></tr>
<tr><th>HTTP_STATE_PUT_RECV </th><td class="description">PUT command, receiving data</td></tr>
<tr><th>HTTP_STATE_STATUS </th><td class="description">Command complete, sending status</td></tr>
<tr><th>HTTP_STATE_TRACE </th><td class="description">TRACE command, waiting for blank line</td></tr>
-<tr><th>HTTP_STATE_UNKNOWN_METHOD <span class="info"> CUPS 1.7/macOS 10.9 </span></th><td class="description">Unknown request method, waiting for blank line </td></tr>
-<tr><th>HTTP_STATE_UNKNOWN_VERSION <span class="info"> CUPS 1.7/macOS 10.9 </span></th><td class="description">Unknown request method, waiting for blank line </td></tr>
+<tr><th>HTTP_STATE_UNKNOWN_METHOD <span class="info"> CUPS 1.7 </span></th><td class="description">Unknown request method, waiting for blank line </td></tr>
+<tr><th>HTTP_STATE_UNKNOWN_VERSION <span class="info"> CUPS 1.7 </span></th><td class="description">Unknown request method, waiting for blank line </td></tr>
<tr><th>HTTP_STATE_WAITING </th><td class="description">Waiting for command</td></tr>
</tbody></table>
<h3 class="enumeration"><a id="http_status_e">http_status_e</a></h3>
<tr><th>HTTP_STATUS_CONTINUE </th><td class="description">Everything OK, keep going...</td></tr>
<tr><th>HTTP_STATUS_CREATED </th><td class="description">PUT command was successful</td></tr>
<tr><th>HTTP_STATUS_CUPS_AUTHORIZATION_CANCELED <span class="info"> CUPS 1.4 </span></th><td class="description">User canceled authorization </td></tr>
-<tr><th>HTTP_STATUS_CUPS_PKI_ERROR <span class="info"> CUPS 1.5/macOS 10.7 </span></th><td class="description">Error negotiating a secure connection </td></tr>
+<tr><th>HTTP_STATUS_CUPS_PKI_ERROR <span class="info"> CUPS 1.5 </span></th><td class="description">Error negotiating a secure connection </td></tr>
<tr><th>HTTP_STATUS_ERROR </th><td class="description">An error response from httpXxxx()</td></tr>
<tr><th>HTTP_STATUS_EXPECTATION_FAILED </th><td class="description">The expectation given in an Expect header field was not met</td></tr>
<tr><th>HTTP_STATUS_FAILED_DEPENDENCY </th><td class="description">Failed dependency (WebDAV)</td></tr>
<tr><th>HTTP_STATUS_MULTIPLE_CHOICES </th><td class="description">Multiple files match request</td></tr>
<tr><th>HTTP_STATUS_MULTI_STATUS </th><td class="description">Multiple status codes (WebDAV)</td></tr>
<tr><th>HTTP_STATUS_NETWORK_AUTHENTICATION_REQUIRED </th><td class="description">Network Authentication Required (WebDAV)</td></tr>
-<tr><th>HTTP_STATUS_NONE <span class="info"> CUPS 1.7/macOS 10.9 </span></th><td class="description">No Expect value </td></tr>
+<tr><th>HTTP_STATUS_NONE <span class="info"> CUPS 1.7 </span></th><td class="description">No Expect value </td></tr>
<tr><th>HTTP_STATUS_NOT_ACCEPTABLE </th><td class="description">Not Acceptable</td></tr>
<tr><th>HTTP_STATUS_NOT_AUTHORITATIVE </th><td class="description">Information isn't authoritative</td></tr>
<tr><th>HTTP_STATUS_NOT_FOUND </th><td class="description">URI was not found</td></tr>
<tr><th>IPP_STATUS_ERROR_CUPS_ACCOUNT_INFO_NEEDED <span class="info"> DEPRECATED </span></th><td class="description">cups-error-account-info-needed </td></tr>
<tr><th>IPP_STATUS_ERROR_CUPS_ACCOUNT_LIMIT_REACHED <span class="info"> DEPRECATED </span></th><td class="description">cups-error-account-limit-reached </td></tr>
<tr><th>IPP_STATUS_ERROR_CUPS_AUTHENTICATION_CANCELED <span class="info"> CUPS 1.5/macOS 10.7 </span></th><td class="description">cups-authentication-canceled - Authentication canceled by user </td></tr>
+<tr><th>IPP_STATUS_ERROR_CUPS_OAUTH </th><td class="description">cups-oauth - OAuth error</td></tr>
<tr><th>IPP_STATUS_ERROR_CUPS_PKI <span class="info"> CUPS 1.5/macOS 10.7 </span></th><td class="description">cups-pki-error - Error negotiating a secure connection </td></tr>
<tr><th>IPP_STATUS_ERROR_CUPS_UPGRADE_REQUIRED <span class="info"> CUPS 1.5/macOS 10.7 </span></th><td class="description">cups-upgrade-required - TLS upgrade required </td></tr>
<tr><th>IPP_STATUS_ERROR_DEVICE </th><td class="description">server-error-device-error</td></tr>
<tr><th>IPP_TAG_END </th><td class="description">End-of-attributes</td></tr>
<tr><th>IPP_TAG_ENUM </th><td class="description">Enumeration value</td></tr>
<tr><th>IPP_TAG_EVENT_NOTIFICATION </th><td class="description">Event group</td></tr>
+<tr><th>IPP_TAG_EXTENSION </th><td class="description">Extension point for 32-bit tags (part of value)</td></tr>
<tr><th>IPP_TAG_INTEGER </th><td class="description">Integer value</td></tr>
<tr><th>IPP_TAG_JOB </th><td class="description">Job group</td></tr>
<tr><th>IPP_TAG_KEYWORD </th><td class="description">Keyword value</td></tr>