//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 is set
and can be checked.

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

== AUTHORS

mailto:kukuk@suse.de[Thorsten Kukuk]

== 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::[]
