Rename PQsslAttributes() to PQsslAttributeNames(), and const-ify fully.

Per discussion, the original name was a bit misleading, and
PQsslAttributeNames() seems more apropos.  It's not quite too late to
change this in 9.5, so let's change it while we can.

Also, make sure that the pointer array is const, not only the pointed-to
strings.

Minor documentation wordsmithing while at it.

Lars Kanis, slight adjustments by me
This commit is contained in:
Tom Lane 2015-11-07 16:13:49 -05:00
parent a43b4ab111
commit 9042f58342
6 changed files with 28 additions and 24 deletions

View File

@ -1873,7 +1873,7 @@ int PQsslInUse(const PGconn *conn);
</listitem>
</varlistentry>
<varlistentry id="libpq-pqsslAttribute">
<varlistentry id="libpq-pqsslattribute">
<term><function>PQsslAttribute</function><indexterm><primary>PQsslAttribute</></></term>
<listitem>
<para>
@ -1947,13 +1947,13 @@ const char *PQsslAttribute(const PGconn *conn, const char *attribute_name);
</listitem>
</varlistentry>
<varlistentry id="libpq-pqsslattributes">
<term><function>PQsslAttributes</function><indexterm><primary>PQsslAttributes</></></term>
<varlistentry id="libpq-pqsslattributenames">
<term><function>PQsslAttributeNames</function><indexterm><primary>PQsslAttributeNames</></></term>
<listitem>
<para>
Return an array of SSL attribute names available. The array is terminated by a NULL pointer.
<synopsis>
const char **PQsslAttributes(const PGconn *conn);
const char * const * PQsslAttributeNames(const PGconn *conn);
</synopsis>
</para>
</listitem>
@ -1963,15 +1963,15 @@ const char **PQsslAttributes(const PGconn *conn);
<term><function>PQsslStruct</function><indexterm><primary>PQsslStruct</></></term>
<listitem>
<para>
Return a pointer to an SSL-implementation specific object describing
Return a pointer to an SSL-implementation-specific object describing
the connection.
<synopsis>
void *PQsslStruct(const PGconn *conn, const char *struct_name);
</synopsis>
</para>
<para>
The structs available depends on the SSL implementation in use.
For OpenSSL, there is one struct, under the name "OpenSSL",
The struct(s) available depend on the SSL implementation in use.
For OpenSSL, there is one struct, available under the name "OpenSSL",
and it returns a pointer to the OpenSSL <literal>SSL</literal> struct.
To use this function, code along the following lines could be used:
<programlisting><![CDATA[

View File

@ -608,18 +608,22 @@ FIXME: Add Andres
2015-02-03 [91fa7b4] Heikki..: Add API functions to libpq to interrogate SSL ..
-->
<para>
Add <application>libpq</> function <link
linkend="libpq-pqsslAttribute"><function>PQsslAttribute()</></>
that returns <acronym>SSL</> information (Heikki Linnakangas)
Add <application>libpq</> functions to return <acronym>SSL</>
information in an implementation-independent way (Heikki Linnakangas)
</para>
<para>
While <link linkend="libpq-pqgetssl"><function>PQgetssl()</></>
can still be used to call <productname>OpenSSL</>
functions, <function>PQsslAttribute()</> returns <acronym>SSL</>
information in an <acronym>SSL</>-implementation-independent way.
(Future versions of libpq might support other <acronym>SSL</>
implementations.)
While <link linkend="libpq-pqgetssl"><function>PQgetssl()</></> can
still be used to call <productname>OpenSSL</> functions, it is now
considered deprecated because future versions
of <application>libpq</> might support other <acronym>SSL</>
implementations. When possible, use the new
functions <link
linkend="libpq-pqsslattribute"><function>PQsslAttribute()</></>, <link
linkend="libpq-pqsslattributenames"><function>PQsslAttributeNames()</></>,
and <link linkend="libpq-pqsslinuse"><function>PQsslInUse()</></>
to obtain <acronym>SSL</> information in
an <acronym>SSL</>-implementation-independent way.
</para>
</listitem>

View File

@ -167,6 +167,6 @@ lo_truncate64 164
PQconninfo 165
PQsslInUse 166
PQsslStruct 167
PQsslAttributes 168
PQsslAttributeNames 168
PQsslAttribute 169
PQsetErrorContextVisibility 170

View File

@ -1532,10 +1532,10 @@ PQsslStruct(PGconn *conn, const char *struct_name)
return NULL;
}
const char **
PQsslAttributes(PGconn *conn)
const char *const *
PQsslAttributeNames(PGconn *conn)
{
static const char *result[] = {
static const char *const result[] = {
"library",
"key_bits",
"cipher",

View File

@ -408,10 +408,10 @@ PQsslAttribute(PGconn *conn, const char *attribute_name)
return NULL;
}
const char **
PQsslAttributes(PGconn *conn)
const char *const *
PQsslAttributeNames(PGconn *conn)
{
static const char *result[] = {NULL};
static const char *const result[] = {NULL};
return result;
}

View File

@ -329,7 +329,7 @@ extern int PQsetClientEncoding(PGconn *conn, const char *encoding);
extern int PQsslInUse(PGconn *conn);
extern void *PQsslStruct(PGconn *conn, const char *struct_name);
extern const char *PQsslAttribute(PGconn *conn, const char *attribute_name);
extern const char **PQsslAttributes(PGconn *conn);
extern const char *const * PQsslAttributeNames(PGconn *conn);
/* Get the OpenSSL structure associated with a connection. Returns NULL for
* unencrypted connections or if any other TLS library is in use. */