<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
<refentry id='pam_get_user'>
<refmeta>
<refentrytitle>pam_get_user</refentrytitle>
<manvolnum>3</manvolnum>
<refmiscinfo class='setdesc'>Linux-PAM Manual</refmiscinfo>
</refmeta>
<refnamediv id='pam_get_user-name'>
<refname>pam_get_user</refname>
<refpurpose>
get user name
</refpurpose>
</refnamediv>
<!-- body begins here -->
<refsynopsisdiv>
<funcsynopsis id="pam_get_user-synopsis">
<funcsynopsisinfo>#include <security/pam_modules.h></funcsynopsisinfo>
<funcprototype>
<funcdef>int <function>pam_get_user</function></funcdef>
<paramdef>const pam_handle_t *<parameter>pamh</parameter></paramdef>
<paramdef>const char **<parameter>user</parameter></paramdef>
<paramdef>const char *<parameter>prompt</parameter></paramdef>
</funcprototype>
</funcsynopsis>
</refsynopsisdiv>
<refsect1 id="pam_get_user-description">
<title>DESCRIPTION</title>
<para>
The <function>pam_get_user</function> function returns the
name of the user specified by
<citerefentry>
<refentrytitle>pam_start</refentrytitle><manvolnum>3</manvolnum>
</citerefentry>. If no user was specified it returns what
<function>pam_get_item (pamh, PAM_USER, ... );</function> would
have returned. If this is NULL it obtains the username via the
<citerefentry>
<refentrytitle>pam_conv</refentrytitle><manvolnum>3</manvolnum>
</citerefentry> mechanism, it prompts the user with the first
non-NULL string in the following list:
</para>
<itemizedlist>
<listitem>
<para>
The <emphasis>prompt</emphasis> argument passed to the function.
</para>
</listitem>
<listitem>
<para>
What is returned by pam_get_item (pamh, PAM_USER_PROMPT, ... );
</para>
</listitem>
<listitem>
<para>
The default prompt: "login: "
</para>
</listitem>
</itemizedlist>
<para>
By whatever means the username is obtained, a pointer to it is
returned as the contents of <emphasis>*user</emphasis>. Note,
this memory should <emphasis remap="B">not</emphasis> be
<emphasis>free()</emphasis>'d or <emphasis>modified</emphasis>
by the module.
</para>
<para>
This function sets the <emphasis>PAM_USER</emphasis> item
associated with the
<citerefentry>
<refentrytitle>pam_set_item</refentrytitle><manvolnum>3</manvolnum>
</citerefentry> and
<citerefentry>
<refentrytitle>pam_get_item</refentrytitle><manvolnum>3</manvolnum>
</citerefentry> functions.
</para>
</refsect1>
<refsect1 id="pam_get_user-return_values">
<title>RETURN VALUES</title>
<variablelist>
<varlistentry>
<term>PAM_SUCCESS</term>
<listitem>
<para>
User name was successful retrieved.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>PAM_SYSTEM_ERR</term>
<listitem>
<para>
A NULL pointer was submitted.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>PAM_CONV_ERR</term>
<listitem>
<para>
The conversation method supplied by the
application failed to obtain the username.
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1 id="pam_get_user-see_also">
<title>SEE ALSO</title>
<para>
<citerefentry>
<refentrytitle>pam_end</refentrytitle><manvolnum>3</manvolnum>
</citerefentry>,
<citerefentry>
<refentrytitle>pam_get_item</refentrytitle><manvolnum>3</manvolnum>
</citerefentry>,
<citerefentry>
<refentrytitle>pam_set_item</refentrytitle><manvolnum>3</manvolnum>
</citerefentry>,
<citerefentry>
<refentrytitle>pam_strerror</refentrytitle><manvolnum>3</manvolnum>
</citerefentry>
</para>
</refsect1>
</refentry>