libpsl/libpsl-Public-Suffix-List-f...

1102 lines
54 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>libpsl: Libpsl Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="Libpsl Reference Manual">
<link rel="up" href="libpsl.html" title="Libpsl Overview">
<link rel="prev" href="libpsl.html" title="Libpsl Overview">
<link rel="next" href="object-tree.html" title="Object Hierarchy">
<meta name="generator" content="GTK-Doc V1.28 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span> 
<a href="#libpsl-Public-Suffix-List-functions.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="libpsl.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="libpsl.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="object-tree.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="libpsl-Public-Suffix-List-functions"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="libpsl-Public-Suffix-List-functions.top_of_page"></a>libpsl</span></h2>
<p>libpsl — Public Suffix List library functions</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
<a name="libpsl-Public-Suffix-List-functions.stability-level"></a><h2>Stability Level</h2>
<a href="http://foldoc.org/Stable"><span class="acronym">Stable</span></a>, unless otherwise indicated
</div>
<div class="refsect1">
<a name="libpsl-Public-Suffix-List-functions.functions"></a><h2>Functions</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="functions_return">
<col class="functions_name">
</colgroup>
<tbody>
<tr>
<td class="function_type">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="returnvalue">psl_ctx_t</span></a> *
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-load-file" title="psl_load_file ()">psl_load_file</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="returnvalue">psl_ctx_t</span></a> *
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-load-fp" title="psl_load_fp ()">psl_load_fp</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="returnvalue">psl_ctx_t</span></a> *
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-latest" title="psl_latest ()">psl_latest</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">const <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="returnvalue">psl_ctx_t</span></a> *
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-builtin" title="psl_builtin ()">psl_builtin</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-free" title="psl_free ()">psl_free</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">int</span>
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-is-public-suffix" title="psl_is_public_suffix ()">psl_is_public_suffix</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">int</span>
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-is-public-suffix2" title="psl_is_public_suffix2 ()">psl_is_public_suffix2</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">const <span class="returnvalue">char</span> *
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-unregistrable-domain" title="psl_unregistrable_domain ()">psl_unregistrable_domain</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">const <span class="returnvalue">char</span> *
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-registrable-domain" title="psl_registrable_domain ()">psl_registrable_domain</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">int</span>
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-suffix-count" title="psl_suffix_count ()">psl_suffix_count</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">int</span>
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-suffix-exception-count" title="psl_suffix_exception_count ()">psl_suffix_exception_count</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">int</span>
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-suffix-wildcard-count" title="psl_suffix_wildcard_count ()">psl_suffix_wildcard_count</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">time_t</span>
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-builtin-file-time" title="psl_builtin_file_time ()">psl_builtin_file_time</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">const <span class="returnvalue">char</span> *
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-builtin-sha1sum" title="psl_builtin_sha1sum ()">psl_builtin_sha1sum</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">const <span class="returnvalue">char</span> *
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-builtin-filename" title="psl_builtin_filename ()">psl_builtin_filename</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">int</span>
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-builtin-outdated" title="psl_builtin_outdated ()">psl_builtin_outdated</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">int</span>
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-is-cookie-domain-acceptable" title="psl_is_cookie_domain_acceptable ()">psl_is_cookie_domain_acceptable</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">const <span class="returnvalue">char</span> *
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-dist-filename" title="psl_dist_filename ()">psl_dist_filename</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">const <span class="returnvalue">char</span> *
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-get-version" title="psl_get_version ()">psl_get_version</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">int</span>
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-check-version-number" title="psl_check_version_number ()">psl_check_version_number</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-error-t" title="enum psl_error_t"><span class="returnvalue">psl_error_t</span></a>
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-str-to-utf8lower" title="psl_str_to_utf8lower ()">psl_str_to_utf8lower</a> <span class="c_punctuation">()</span>
</td>
</tr>
<tr>
<td class="function_type">
<span class="returnvalue">void</span>
</td>
<td class="function_name">
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-free-string" title="psl_free_string ()">psl_free_string</a> <span class="c_punctuation">()</span>
</td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="libpsl-Public-Suffix-List-functions.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="name">
<col class="description">
</colgroup>
<tbody>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="libpsl-Public-Suffix-List-functions.html#PSL-VERSION:CAPS" title="PSL_VERSION">PSL_VERSION</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="libpsl-Public-Suffix-List-functions.html#PSL-VERSION-MAJOR:CAPS" title="PSL_VERSION_MAJOR">PSL_VERSION_MAJOR</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="libpsl-Public-Suffix-List-functions.html#PSL-VERSION-MINOR:CAPS" title="PSL_VERSION_MINOR">PSL_VERSION_MINOR</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="libpsl-Public-Suffix-List-functions.html#PSL-VERSION-NUMBER:CAPS" title="PSL_VERSION_NUMBER">PSL_VERSION_NUMBER</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="libpsl-Public-Suffix-List-functions.html#PSL-VERSION-PATCH:CAPS" title="PSL_VERSION_PATCH">PSL_VERSION_PATCH</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="libpsl-Public-Suffix-List-functions.html#PSL-TYPE-ICANN:CAPS" title="PSL_TYPE_ICANN">PSL_TYPE_ICANN</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="libpsl-Public-Suffix-List-functions.html#PSL-TYPE-PRIVATE:CAPS" title="PSL_TYPE_PRIVATE">PSL_TYPE_PRIVATE</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="libpsl-Public-Suffix-List-functions.html#PSL-TYPE-NO-STAR-RULE:CAPS" title="PSL_TYPE_NO_STAR_RULE">PSL_TYPE_NO_STAR_RULE</a></td>
</tr>
<tr>
<td class="define_keyword">#define</td>
<td class="function_name"><a class="link" href="libpsl-Public-Suffix-List-functions.html#PSL-TYPE-ANY:CAPS" title="PSL_TYPE_ANY">PSL_TYPE_ANY</a></td>
</tr>
<tr>
<td class="datatype_keyword">enum</td>
<td class="function_name"><a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-error-t" title="enum psl_error_t">psl_error_t</a></td>
</tr>
<tr>
<td class="typedef_keyword">typedef</td>
<td class="function_name"><a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t">psl_ctx_t</a></td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect1">
<a name="libpsl-Public-Suffix-List-functions.includes"></a><h2>Includes</h2>
<pre class="synopsis">#include &lt;libpsl.h&gt;
</pre>
</div>
<div class="refsect1">
<a name="libpsl-Public-Suffix-List-functions.description"></a><h2>Description</h2>
<p><a class="ulink" href="https://publicsuffix.org/" target="_top">Public Suffix List</a> library functions.</p>
</div>
<div class="refsect1">
<a name="libpsl-Public-Suffix-List-functions.functions_details"></a><h2>Functions</h2>
<div class="refsect2">
<a name="psl-load-file"></a><h3>psl_load_file ()</h3>
<pre class="programlisting"><a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="returnvalue">psl_ctx_t</span></a> *
psl_load_file (<em class="parameter"><code>const <span class="type">char</span> *fname</code></em>);</pre>
<p>This function loads the public suffixes file named <em class="parameter"><code>fname</code></em>
.
To free the allocated resources, call <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-free" title="psl_free ()"><code class="function">psl_free()</code></a>.</p>
<p>The suffixes are expected to be UTF-8 encoded (lowercase + NFKC) if they are international.</p>
<div class="refsect3">
<a name="psl-load-file.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>fname</p></td>
<td class="parameter_description"><p>Name of PSL file</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="psl-load-file.returns"></a><h4>Returns</h4>
<p> Pointer to a PSL context or <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> on failure.</p>
</div>
<p class="since">Since: 0.1</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-load-fp"></a><h3>psl_load_fp ()</h3>
<pre class="programlisting"><a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="returnvalue">psl_ctx_t</span></a> *
psl_load_fp (<em class="parameter"><code><span class="type">FILE</span> *fp</code></em>);</pre>
<p>This function loads the public suffixes from a FILE pointer.
To free the allocated resources, call <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-free" title="psl_free ()"><code class="function">psl_free()</code></a>.</p>
<p>The suffixes are expected to be UTF-8 encoded (lowercase + NFKC) if they are international.</p>
<div class="refsect3">
<a name="psl-load-fp.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>fp</p></td>
<td class="parameter_description"><p>FILE pointer</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="psl-load-fp.returns"></a><h4>Returns</h4>
<p> Pointer to a PSL context or <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> on failure.</p>
</div>
<p class="since">Since: 0.1</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-latest"></a><h3>psl_latest ()</h3>
<pre class="programlisting"><a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="returnvalue">psl_ctx_t</span></a> *
psl_latest (<em class="parameter"><code>const <span class="type">char</span> *fname</code></em>);</pre>
<p>This function loads the the latest available PSL data from either</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem"><p><em class="parameter"><code>fname</code></em>
(application specific filename, may be <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>)</p></li>
<li class="listitem"><p>location specified during built-time (filename from ./configure --with-psl-distfile)</p></li>
<li class="listitem"><p>built-in PSL data (generated from ./configure --with-psl-file)</p></li>
<li class="listitem"><p>location of built-in data (filename from ./configure --with-psl-file)</p></li>
</ul></div>
<p>If none of the above is available, the function returns <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>.</p>
<p>To free the allocated resources, call <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-free" title="psl_free ()"><code class="function">psl_free()</code></a>.</p>
<div class="refsect3">
<a name="psl-latest.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>fname</p></td>
<td class="parameter_description"><p>Name of PSL file or <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="psl-latest.returns"></a><h4>Returns</h4>
<p> Pointer to a PSL context or <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> on failure.</p>
</div>
<p class="since">Since: 0.16</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-builtin"></a><h3>psl_builtin ()</h3>
<pre class="programlisting">const <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="returnvalue">psl_ctx_t</span></a> *
psl_builtin (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>This function returns the PSL context that has been generated and built in at compile-time.
You don't have to free the returned context explicitly.</p>
<p>The builtin data also contains punycode entries, one for each international domain name.</p>
<p>If the generation of built-in data has been disabled during compilation, <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> will be returned.
When using the builtin psl context, you can provide UTF-8 (lowercase + NFKC) or ASCII/ACE (punycode)
representations of domains to functions like <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-is-public-suffix" title="psl_is_public_suffix ()"><code class="function">psl_is_public_suffix()</code></a>.</p>
<div class="refsect3">
<a name="psl-builtin.returns"></a><h4>Returns</h4>
<p> Pointer to the built in PSL data or NULL if this data is not available.</p>
</div>
<p class="since">Since: 0.1</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-free"></a><h3>psl_free ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
psl_free (<em class="parameter"><code><a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="type">psl_ctx_t</span></a> *psl</code></em>);</pre>
<p>This function frees the the PSL context that has been retrieved via
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-load-fp" title="psl_load_fp ()"><code class="function">psl_load_fp()</code></a> or <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-load-file" title="psl_load_file ()"><code class="function">psl_load_file()</code></a>.</p>
<div class="refsect3">
<a name="psl-free.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>psl</p></td>
<td class="parameter_description"><p>PSL context pointer</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<p class="since">Since: 0.1</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-is-public-suffix"></a><h3>psl_is_public_suffix ()</h3>
<pre class="programlisting"><span class="returnvalue">int</span>
psl_is_public_suffix (<em class="parameter"><code>const <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="type">psl_ctx_t</span></a> *psl</code></em>,
<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>);</pre>
<p>This function checks if <em class="parameter"><code>domain</code></em>
is a public suffix by the means of the
<a class="ulink" href="https://publicsuffix.org" target="_top">Mozilla Public Suffix List</a>.</p>
<p>For cookie domain checking see <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-is-cookie-domain-acceptable" title="psl_is_cookie_domain_acceptable ()"><code class="function">psl_is_cookie_domain_acceptable()</code></a>.</p>
<p>International <em class="parameter"><code>domain</code></em>
names have to be either in UTF-8 (lowercase + NFKC) or in ASCII/ACE format (punycode).
Other encodings likely result in incorrect return values.
Use helper function <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-str-to-utf8lower" title="psl_str_to_utf8lower ()"><code class="function">psl_str_to_utf8lower()</code></a> for normalization <em class="parameter"><code>domain</code></em>
.</p>
<p><em class="parameter"><code>psl</code></em>
is a context returned by either <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-load-file" title="psl_load_file ()"><code class="function">psl_load_file()</code></a>, <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-load-fp" title="psl_load_fp ()"><code class="function">psl_load_fp()</code></a> or
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-builtin" title="psl_builtin ()"><code class="function">psl_builtin()</code></a>.</p>
<div class="refsect3">
<a name="psl-is-public-suffix.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>psl</p></td>
<td class="parameter_description"><p>PSL context</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>domain</p></td>
<td class="parameter_description"><p>Domain string</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="psl-is-public-suffix.returns"></a><h4>Returns</h4>
<p> 1 if domain is a public suffix, 0 if not.</p>
</div>
<p class="since">Since: 0.1</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-is-public-suffix2"></a><h3>psl_is_public_suffix2 ()</h3>
<pre class="programlisting"><span class="returnvalue">int</span>
psl_is_public_suffix2 (<em class="parameter"><code>const <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="type">psl_ctx_t</span></a> *psl</code></em>,
<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>,
<em class="parameter"><code><span class="type">int</span> type</code></em>);</pre>
<p>This function checks if <em class="parameter"><code>domain</code></em>
is a public suffix by the means of the
<a class="ulink" href="https://publicsuffix.org" target="_top">Mozilla Public Suffix List</a>.</p>
<p><em class="parameter"><code>type</code></em>
specifies the PSL section where to perform the lookup. Valid values are
<a class="link" href="libpsl-Public-Suffix-List-functions.html#PSL-TYPE-PRIVATE:CAPS" title="PSL_TYPE_PRIVATE"><code class="literal">PSL_TYPE_PRIVATE</code></a>, <a class="link" href="libpsl-Public-Suffix-List-functions.html#PSL-TYPE-ICANN:CAPS" title="PSL_TYPE_ICANN"><code class="literal">PSL_TYPE_ICANN</code></a>, <a class="link" href="libpsl-Public-Suffix-List-functions.html#PSL-TYPE-NO-STAR-RULE:CAPS" title="PSL_TYPE_NO_STAR_RULE"><code class="literal">PSL_TYPE_NO_STAR_RULE</code></a>, and <a class="link" href="libpsl-Public-Suffix-List-functions.html#PSL-TYPE-ANY:CAPS" title="PSL_TYPE_ANY"><code class="literal">PSL_TYPE_ANY</code></a>.</p>
<p><a class="link" href="libpsl-Public-Suffix-List-functions.html#PSL-TYPE-NO-STAR-RULE:CAPS" title="PSL_TYPE_NO_STAR_RULE"><code class="literal">PSL_TYPE_NO_STAR_RULE</code></a> switches of the 'prevailing star rule' (see
<a class="ulink" href="https://publicsuffix.org/list" target="_top">List</a> under 'Algorithm' 2.).
Applying the flag means that TLDs not explicitly listed in the PSL are *not* treated as public suffixes.</p>
<p>International <em class="parameter"><code>domain</code></em>
names have to be either in UTF-8 (lowercase + NFKC) or in ASCII/ACE format (punycode).
Other encodings likely result in incorrect return values.
Use helper function <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-str-to-utf8lower" title="psl_str_to_utf8lower ()"><code class="function">psl_str_to_utf8lower()</code></a> for normalization <em class="parameter"><code>domain</code></em>
.</p>
<p><em class="parameter"><code>psl</code></em>
is a context returned by either <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-load-file" title="psl_load_file ()"><code class="function">psl_load_file()</code></a>, <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-load-fp" title="psl_load_fp ()"><code class="function">psl_load_fp()</code></a> or
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-builtin" title="psl_builtin ()"><code class="function">psl_builtin()</code></a>.</p>
<div class="refsect3">
<a name="psl-is-public-suffix2.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>psl</p></td>
<td class="parameter_description"><p>PSL context</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>domain</p></td>
<td class="parameter_description"><p>Domain string</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>type</p></td>
<td class="parameter_description"><p>Domain type</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="psl-is-public-suffix2.returns"></a><h4>Returns</h4>
<p> 1 if domain is a public suffix, 0 if not.</p>
</div>
<p class="since">Since: 0.1</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-unregistrable-domain"></a><h3>psl_unregistrable_domain ()</h3>
<pre class="programlisting">const <span class="returnvalue">char</span> *
psl_unregistrable_domain (<em class="parameter"><code>const <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="type">psl_ctx_t</span></a> *psl</code></em>,
<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>);</pre>
<p>This function finds the longest public suffix part of <em class="parameter"><code>domain</code></em>
by the means
of the <a class="ulink" href="https://publicsuffix.org" target="_top">Mozilla Public Suffix List</a>.</p>
<p>International <em class="parameter"><code>domain</code></em>
names have to be either in UTF-8 (lowercase + NFKC) or in ASCII/ACE format (punycode).
Other encodings likely result in incorrect return values.
Use helper function <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-str-to-utf8lower" title="psl_str_to_utf8lower ()"><code class="function">psl_str_to_utf8lower()</code></a> for normalization <em class="parameter"><code>domain</code></em>
.</p>
<p><em class="parameter"><code>psl</code></em>
is a context returned by either <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-load-file" title="psl_load_file ()"><code class="function">psl_load_file()</code></a>, <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-load-fp" title="psl_load_fp ()"><code class="function">psl_load_fp()</code></a> or
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-builtin" title="psl_builtin ()"><code class="function">psl_builtin()</code></a>.</p>
<div class="refsect3">
<a name="psl-unregistrable-domain.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>psl</p></td>
<td class="parameter_description"><p>PSL context</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>domain</p></td>
<td class="parameter_description"><p>Domain string</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="psl-unregistrable-domain.returns"></a><h4>Returns</h4>
<p> Pointer to longest public suffix part of <em class="parameter"><code>domain</code></em>
or <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>domain</code></em>
does not contain a public suffix (or if <em class="parameter"><code>psl</code></em>
is <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>).</p>
</div>
<p class="since">Since: 0.1</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-registrable-domain"></a><h3>psl_registrable_domain ()</h3>
<pre class="programlisting">const <span class="returnvalue">char</span> *
psl_registrable_domain (<em class="parameter"><code>const <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="type">psl_ctx_t</span></a> *psl</code></em>,
<em class="parameter"><code>const <span class="type">char</span> *domain</code></em>);</pre>
<p>This function finds the shortest private suffix part of <em class="parameter"><code>domain</code></em>
by the means
of the <a class="ulink" href="https://publicsuffix.org" target="_top">Mozilla Public Suffix List</a>.</p>
<p>International <em class="parameter"><code>domain</code></em>
names have to be either in UTF-8 (lowercase + NFKC) or in ASCII/ACE format (punycode).
Other encodings likely result in incorrect return values.
Use helper function <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-str-to-utf8lower" title="psl_str_to_utf8lower ()"><code class="function">psl_str_to_utf8lower()</code></a> for normalization <em class="parameter"><code>domain</code></em>
.</p>
<p><em class="parameter"><code>psl</code></em>
is a context returned by either <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-load-file" title="psl_load_file ()"><code class="function">psl_load_file()</code></a>, <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-load-fp" title="psl_load_fp ()"><code class="function">psl_load_fp()</code></a> or
<a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-builtin" title="psl_builtin ()"><code class="function">psl_builtin()</code></a>.</p>
<div class="refsect3">
<a name="psl-registrable-domain.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>psl</p></td>
<td class="parameter_description"><p>PSL context</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>domain</p></td>
<td class="parameter_description"><p>Domain string</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="psl-registrable-domain.returns"></a><h4>Returns</h4>
<p> Pointer to shortest private suffix part of <em class="parameter"><code>domain</code></em>
or <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if <em class="parameter"><code>domain</code></em>
does not contain a private suffix (or if <em class="parameter"><code>psl</code></em>
is <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>).</p>
</div>
<p class="since">Since: 0.1</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-suffix-count"></a><h3>psl_suffix_count ()</h3>
<pre class="programlisting"><span class="returnvalue">int</span>
psl_suffix_count (<em class="parameter"><code>const <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="type">psl_ctx_t</span></a> *psl</code></em>);</pre>
<p>This function returns number of public suffixes maintained by <em class="parameter"><code>psl</code></em>
.
The number of exceptions within the Public Suffix List are not included.</p>
<p>If the information is not available, the return value is -1 (since 0.19).
This is the case with DAFSA blobs or if <em class="parameter"><code>psl</code></em>
is NULL.</p>
<div class="refsect3">
<a name="psl-suffix-count.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>psl</p></td>
<td class="parameter_description"><p>PSL context pointer</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="psl-suffix-count.returns"></a><h4>Returns</h4>
<p> Number of public suffixes entries in PSL context or -1 if this information is not available.</p>
</div>
<p class="since">Since: 0.1</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-suffix-exception-count"></a><h3>psl_suffix_exception_count ()</h3>
<pre class="programlisting"><span class="returnvalue">int</span>
psl_suffix_exception_count (<em class="parameter"><code>const <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="type">psl_ctx_t</span></a> *psl</code></em>);</pre>
<p>This function returns number of public suffix exceptions maintained by <em class="parameter"><code>psl</code></em>
.</p>
<p>If the information is not available, the return value is -1 (since 0.19).
This is the case with DAFSA blobs or if <em class="parameter"><code>psl</code></em>
is NULL.</p>
<div class="refsect3">
<a name="psl-suffix-exception-count.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>psl</p></td>
<td class="parameter_description"><p>PSL context pointer</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="psl-suffix-exception-count.returns"></a><h4>Returns</h4>
<p> Number of public suffix exceptions in PSL context or -1 if this information is not available.</p>
</div>
<p class="since">Since: 0.1</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-suffix-wildcard-count"></a><h3>psl_suffix_wildcard_count ()</h3>
<pre class="programlisting"><span class="returnvalue">int</span>
psl_suffix_wildcard_count (<em class="parameter"><code>const <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="type">psl_ctx_t</span></a> *psl</code></em>);</pre>
<p>This function returns number of public suffix wildcards maintained by <em class="parameter"><code>psl</code></em>
.</p>
<p>If the information is not available, the return value is -1 (since 0.19).
This is the case with DAFSA blobs or if <em class="parameter"><code>psl</code></em>
is NULL.</p>
<div class="refsect3">
<a name="psl-suffix-wildcard-count.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>psl</p></td>
<td class="parameter_description"><p>PSL context pointer</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="psl-suffix-wildcard-count.returns"></a><h4>Returns</h4>
<p> Number of public suffix wildcards in PSL context or -1 if this information is not available.</p>
</div>
<p class="since">Since: 0.10.0</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-builtin-file-time"></a><h3>psl_builtin_file_time ()</h3>
<pre class="programlisting"><span class="returnvalue">time_t</span>
psl_builtin_file_time (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>This function returns the mtime of the Public Suffix List file that has been built in.</p>
<p>If the generation of built-in data has been disabled during compilation, 0 will be returned.</p>
<div class="refsect3">
<a name="psl-builtin-file-time.returns"></a><h4>Returns</h4>
<p> time_t value or 0.</p>
</div>
<p class="since">Since: 0.1</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-builtin-sha1sum"></a><h3>psl_builtin_sha1sum ()</h3>
<pre class="programlisting">const <span class="returnvalue">char</span> *
psl_builtin_sha1sum (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>This function returns the SHA1 checksum of the Public Suffix List file that has been built in.
The returned string is in lowercase hex encoding, e.g. "2af1e9e3044eda0678bb05949d7cca2f769901d8".</p>
<p>If the generation of built-in data has been disabled during compilation, an empty string will be returned.</p>
<div class="refsect3">
<a name="psl-builtin-sha1sum.returns"></a><h4>Returns</h4>
<p> String containing SHA1 checksum or an empty string.</p>
</div>
<p class="since">Since: 0.1</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-builtin-filename"></a><h3>psl_builtin_filename ()</h3>
<pre class="programlisting">const <span class="returnvalue">char</span> *
psl_builtin_filename (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>This function returns the file name of the Public Suffix List file that has been built in.</p>
<p>If the generation of built-in data has been disabled during compilation, an empty string will be returned.</p>
<div class="refsect3">
<a name="psl-builtin-filename.returns"></a><h4>Returns</h4>
<p> String containing the PSL file name or an empty string.</p>
</div>
<p class="since">Since: 0.1</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-builtin-outdated"></a><h3>psl_builtin_outdated ()</h3>
<pre class="programlisting"><span class="returnvalue">int</span>
psl_builtin_outdated (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>This function checks if the built-in data is older than the file it has been created from.
If it is, it might be a good idea for the application to reload the PSL.
The mtime is taken as reference.</p>
<p>If the PSL file does not exist, it is assumed that the built-in data is not outdated.</p>
<div class="refsect3">
<a name="psl-builtin-outdated.returns"></a><h4>Returns</h4>
<p> 1 if the built-in is outdated, 0 otherwise.</p>
</div>
<p class="since">Since: 0.10.0</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-is-cookie-domain-acceptable"></a><h3>psl_is_cookie_domain_acceptable ()</h3>
<pre class="programlisting"><span class="returnvalue">int</span>
psl_is_cookie_domain_acceptable (<em class="parameter"><code>const <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-ctx-t" title="psl_ctx_t"><span class="type">psl_ctx_t</span></a> *psl</code></em>,
<em class="parameter"><code>const <span class="type">char</span> *hostname</code></em>,
<em class="parameter"><code>const <span class="type">char</span> *cookie_domain</code></em>);</pre>
<p>This helper function checks whether <em class="parameter"><code>cookie_domain</code></em>
is an acceptable cookie domain value for the request
<em class="parameter"><code>hostname</code></em>
.</p>
<p>For international domain names both, <em class="parameter"><code>hostname</code></em>
and <em class="parameter"><code>cookie_domain</code></em>
, have to be either in UTF-8 (lowercase + NFKC)
or in ASCII/ACE (punycode) format. Other encodings or mixing UTF-8 and punycode likely result in incorrect return values.</p>
<p>Use helper function <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-str-to-utf8lower" title="psl_str_to_utf8lower ()"><code class="function">psl_str_to_utf8lower()</code></a> for normalization of <em class="parameter"><code>hostname</code></em>
and <em class="parameter"><code>cookie_domain</code></em>
.</p>
<p>Examples:</p>
<div class="orderedlist"><ol class="orderedlist" type="1">
<li class="listitem"><p>Cookie domain 'example.com' would be acceptable for hostname 'www.example.com',
but '.com' or 'com' would NOT be acceptable since 'com' is a public suffix.</p></li>
<li class="listitem"><p>Cookie domain 'his.name' would be acceptable for hostname 'remember.his.name',
but NOT for 'forgot.his.name' since 'forgot.his.name' is a public suffix.</p></li>
</ol></div>
<div class="refsect3">
<a name="psl-is-cookie-domain-acceptable.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>psl</p></td>
<td class="parameter_description"><p>PSL context pointer</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>hostname</p></td>
<td class="parameter_description"><p>The request hostname.</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>cookie_domain</p></td>
<td class="parameter_description"><p>The domain value from a cookie</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="psl-is-cookie-domain-acceptable.returns"></a><h4>Returns</h4>
<p> 1 if acceptable, 0 if not acceptable.</p>
</div>
<p class="since">Since: 0.1</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-dist-filename"></a><h3>psl_dist_filename ()</h3>
<pre class="programlisting">const <span class="returnvalue">char</span> *
psl_dist_filename (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>This function returns the file name of the distribution/system PSL data file.
This file will be considered by <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-latest" title="psl_latest ()"><code class="function">psl_latest()</code></a>.</p>
<p>Return the filename that is set by ./configure --with-psl-distfile, or an empty string.</p>
<div class="refsect3">
<a name="psl-dist-filename.returns"></a><h4>Returns</h4>
<p> String containing a PSL file name or an empty string.</p>
</div>
<p class="since">Since: 0.16</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-get-version"></a><h3>psl_get_version ()</h3>
<pre class="programlisting">const <span class="returnvalue">char</span> *
psl_get_version (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
<p>Get libpsl version.</p>
<div class="refsect3">
<a name="psl-get-version.returns"></a><h4>Returns</h4>
<p> String containing version of libpsl.</p>
</div>
<p class="since">Since: 0.2.5</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-check-version-number"></a><h3>psl_check_version_number ()</h3>
<pre class="programlisting"><span class="returnvalue">int</span>
psl_check_version_number (<em class="parameter"><code><span class="type">int</span> version</code></em>);</pre>
<p>Check the given version number is at minimum the current library version number.
The version number must be a hexadecimal number like 0x000a01 (V0.10.1).</p>
<div class="refsect3">
<a name="psl-check-version-number.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>version</p></td>
<td class="parameter_description"><p>Version number (hex) to check against.</p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<div class="refsect3">
<a name="psl-check-version-number.returns"></a><h4>Returns</h4>
<p> Returns the library version number if the given version number is at least
the version of the library, else return 0; If the argument is 0, the function returns
the library version number without performing a check.</p>
</div>
<p class="since">Since: 0.11.0</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-str-to-utf8lower"></a><h3>psl_str_to_utf8lower ()</h3>
<pre class="programlisting"><a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-error-t" title="enum psl_error_t"><span class="returnvalue">psl_error_t</span></a>
psl_str_to_utf8lower (<em class="parameter"><code>const <span class="type">char</span> *str</code></em>,
<em class="parameter"><code>const <span class="type">char</span> *encoding</code></em>,
<em class="parameter"><code>const <span class="type">char</span> *locale</code></em>,
<em class="parameter"><code><span class="type">char</span> **lower</code></em>);</pre>
<p>This helper function converts a string to UTF-8 lowercase + NFKC representation.
Lowercase + NFKC UTF-8 is needed as input to the domain checking functions.</p>
<p><em class="parameter"><code>lower</code></em>
stays unchanged on error.</p>
<p>When returning PSL_SUCCESS, the return value 'lower' must be freed after usage.</p>
<div class="refsect3">
<a name="psl-str-to-utf8lower.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody>
<tr>
<td class="parameter_name"><p>str</p></td>
<td class="parameter_description"><p>string to convert</p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>encoding</p></td>
<td class="parameter_description"><p>charset encoding of <em class="parameter"><code>str</code></em>
, e.g. 'iso-8859-1' or <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>locale</p></td>
<td class="parameter_description"><p>locale of <em class="parameter"><code>str</code></em>
for to lowercase conversion, e.g. 'de' or <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
<td class="parameter_annotations"> </td>
</tr>
<tr>
<td class="parameter_name"><p>lower</p></td>
<td class="parameter_description"><p>return value containing the converted string</p></td>
<td class="parameter_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
<div class="refsect3">
<a name="psl-str-to-utf8lower.returns"></a><h4>Returns</h4>
<p> psl_error_t value.
PSL_SUCCESS: Success
PSL_ERR_INVALID_ARG: <em class="parameter"><code>str</code></em>
is a <a href="/usr/share/gtk-doc/html/glib/glib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> value.
PSL_ERR_CONVERTER: Failed to open the unicode converter with name <em class="parameter"><code>encoding</code></em>
PSL_ERR_TO_UTF16: Failed to convert <em class="parameter"><code>str</code></em>
to unicode
PSL_ERR_TO_LOWER: Failed to convert unicode to lowercase
PSL_ERR_TO_UTF8: Failed to convert unicode to UTF-8
PSL_ERR_NO_MEM: Failed to allocate memory</p>
</div>
<p class="since">Since: 0.4</p>
</div>
<hr>
<div class="refsect2">
<a name="psl-free-string"></a><h3>psl_free_string ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
psl_free_string (<em class="parameter"><code><span class="type">char</span> *str</code></em>);</pre>
<p>This function <code class="function">free()</code>'s the memory allocated by <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-str-to-utf8lower" title="psl_str_to_utf8lower ()"><code class="function">psl_str_to_utf8lower()</code></a> when
returning a lowercase string</p>
<div class="refsect3">
<a name="psl-free-string.parameters"></a><h4>Parameters</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="parameters_name">
<col class="parameters_description">
<col width="200px" class="parameters_annotations">
</colgroup>
<tbody><tr>
<td class="parameter_name"><p>str</p></td>
<td class="parameter_description"><p>pointer to lowercase string returned by <a class="link" href="libpsl-Public-Suffix-List-functions.html#psl-str-to-utf8lower" title="psl_str_to_utf8lower ()"><code class="function">psl_str_to_utf8lower()</code></a></p></td>
<td class="parameter_annotations"> </td>
</tr></tbody>
</table></div>
</div>
<p class="since">Since: 0.19</p>
</div>
</div>
<div class="refsect1">
<a name="libpsl-Public-Suffix-List-functions.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="PSL-VERSION:CAPS"></a><h3>PSL_VERSION</h3>
<pre class="programlisting">#define PSL_VERSION "0.20.2"
</pre>
</div>
<hr>
<div class="refsect2">
<a name="PSL-VERSION-MAJOR:CAPS"></a><h3>PSL_VERSION_MAJOR</h3>
<pre class="programlisting">#define PSL_VERSION_MAJOR 0
</pre>
</div>
<hr>
<div class="refsect2">
<a name="PSL-VERSION-MINOR:CAPS"></a><h3>PSL_VERSION_MINOR</h3>
<pre class="programlisting">#define PSL_VERSION_MINOR 20
</pre>
</div>
<hr>
<div class="refsect2">
<a name="PSL-VERSION-NUMBER:CAPS"></a><h3>PSL_VERSION_NUMBER</h3>
<pre class="programlisting">#define PSL_VERSION_NUMBER 0x001402
</pre>
</div>
<hr>
<div class="refsect2">
<a name="PSL-VERSION-PATCH:CAPS"></a><h3>PSL_VERSION_PATCH</h3>
<pre class="programlisting">#define PSL_VERSION_PATCH 2
</pre>
</div>
<hr>
<div class="refsect2">
<a name="PSL-TYPE-ICANN:CAPS"></a><h3>PSL_TYPE_ICANN</h3>
<pre class="programlisting">#define PSL_TYPE_ICANN (1&lt;&lt;0)
</pre>
</div>
<hr>
<div class="refsect2">
<a name="PSL-TYPE-PRIVATE:CAPS"></a><h3>PSL_TYPE_PRIVATE</h3>
<pre class="programlisting">#define PSL_TYPE_PRIVATE (1&lt;&lt;1)
</pre>
</div>
<hr>
<div class="refsect2">
<a name="PSL-TYPE-NO-STAR-RULE:CAPS"></a><h3>PSL_TYPE_NO_STAR_RULE</h3>
<pre class="programlisting">#define PSL_TYPE_NO_STAR_RULE (1&lt;&lt;2)
</pre>
</div>
<hr>
<div class="refsect2">
<a name="PSL-TYPE-ANY:CAPS"></a><h3>PSL_TYPE_ANY</h3>
<pre class="programlisting">#define PSL_TYPE_ANY (PSL_TYPE_ICANN | PSL_TYPE_PRIVATE)
</pre>
</div>
<hr>
<div class="refsect2">
<a name="psl-error-t"></a><h3>enum psl_error_t</h3>
<p>Return codes for PSL functions.
Negative return codes mean failure.
Positive values are reserved for non-error return codes.</p>
<div class="refsect3">
<a name="psl-error-t.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="300px" class="enum_members_name">
<col class="enum_members_description">
<col width="200px" class="enum_members_annotations">
</colgroup>
<tbody>
<tr>
<td class="enum_member_name"><p><a name="PSL-SUCCESS:CAPS"></a>PSL_SUCCESS</p></td>
<td class="enum_member_description">
<p>Successful return.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="PSL-ERR-INVALID-ARG:CAPS"></a>PSL_ERR_INVALID_ARG</p></td>
<td class="enum_member_description">
<p>Invalid argument.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="PSL-ERR-CONVERTER:CAPS"></a>PSL_ERR_CONVERTER</p></td>
<td class="enum_member_description">
<p>Failed to open libicu utf-16 converter.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="PSL-ERR-TO-UTF16:CAPS"></a>PSL_ERR_TO_UTF16</p></td>
<td class="enum_member_description">
<p>Failed to convert to utf-16.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="PSL-ERR-TO-LOWER:CAPS"></a>PSL_ERR_TO_LOWER</p></td>
<td class="enum_member_description">
<p>Failed to convert utf-16 to lowercase.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="PSL-ERR-TO-UTF8:CAPS"></a>PSL_ERR_TO_UTF8</p></td>
<td class="enum_member_description">
<p>Failed to convert utf-16 to utf-8.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="PSL-ERR-NO-MEM:CAPS"></a>PSL_ERR_NO_MEM</p></td>
<td class="enum_member_description">
<p>Failed to allocate memory.</p>
</td>
<td class="enum_member_annotations"> </td>
</tr>
</tbody>
</table></div>
</div>
</div>
<hr>
<div class="refsect2">
<a name="psl-ctx-t"></a><h3>psl_ctx_t</h3>
<pre class="programlisting">typedef struct _psl_ctx_st psl_ctx_t;
</pre>
</div>
</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.28</div>
</body>
</html>