//po4a: entry man manual
= ll2_read_entry(3)
:doctype: manpage
:man manual: Programmer's Manual
:man source: util-linux {release-version}
:page-layout: base
:lib: liblastlog2
:firstversion: 2.40

== NAME

ll2_read_entry -  Reads one entry from database and returns that.

== SYNOPSIS

*#include <lastlog2.h>*

*int ll2_read_entry (struct ll2_context *__context__, const char *__user__,
		     int64_t *__ll_time__, char **__tty__, char **__rhost__,
		     char **__pam_service__, char **__error__);*

== DESCRIPTION

Reads the first entry from database, defined in _context_, for user _user_.
If _context_ is NULL, the default database, defined in _LL2_DEFAULT_DATABASE_,
will be taken.

--------------------------------------
char    *error = NULL;
const   char *user = "root";
int64_t res_time;
char    *res_tty = NULL;
char    *res_rhost = NULL;
char    *res_service = NULL;

int ret = ll2_read_entry (NULL, user, &res_time, &res_tty, &res_rhost, &res_service, &error);
--------------------------------------

== RETURN VALUE

Returns 0 on success, -ENOMEM or -1 on other failure.
_error_ contains an error string if the return value is -1.
_error_ is not guaranteed to contain an error string, could also be NULL.
_error_ should be freed by the caller.
If lastlog2 database does not exist at all, the errno ENOENT has been set
and can be checked.

The evaluated values are returned by _ll_time_, _tty_, _rhost_ and _pam_service_.

== AUTHORS

Thorsten Kukuk (kukuk@suse.de)

== SEE ALSO

*lastlog2*(3),
*ll2_new_context(3),
*ll2_unref_context(3),
*ll2_read_all*(3),
*ll2_write_entry*(3),
*ll2_update_login_time*(3),
*ll2_remove_entry*(3),
*ll2_rename_user*(3),
*ll2_import_lastlog*(3)

include::man-common/bugreports.adoc[]

include::man-common/footer-lib.adoc[]

ifdef::translation[]
include::man-common/translation.adoc[]
endif::[]
