libtraceevent(3)
================

NAME
----
tep_strerror - Returns a string describing regular errno and tep error number.

SYNOPSIS
--------
[verse]
--
*#include <event-parse.h>*

int *tep_strerror*(struct tep_handle pass:[*]_tep_, enum tep_errno _errnum_, char pass:[*]_buf_, size_t _buflen_);

--
DESCRIPTION
-----------
The _tep_strerror()_ function converts tep error number into a human
readable string.
The _tep_ argument is trace event parser context. The _errnum_ is a regular
errno, defined in errno.h, or a tep error number. The string, describing this
error number is copied in the _buf_ argument. The _buflen_ argument is
the size of the _buf_.

It as a thread safe wrapper around strerror_r(). The library function has two
different behaviors - POSIX and GNU specific. The _tep_strerror()_ API always
behaves as the POSIX version - the error string is copied in the user supplied
buffer.

RETURN VALUE
------------
The _tep_strerror()_ function returns 0, if a valid _errnum_ is passed and the
string is copied into _buf_. If _errnum_ is not a valid error number,
-1 is returned and _buf_ is not modified.

EXAMPLE
-------
[source,c]
--
#include <event-parse.h>
...
struct tep_handle *tep = tep_alloc();
...
char buf[32];
char *pool = calloc(1, 128);
if (tep == NULL) {
	tep_strerror(tep, TEP_ERRNO__MEM_ALLOC_FAILED, buf, 32);
	printf ("The pool is not initialized, %s", buf);
}
...
--

FILES
-----
[verse]
--
*event-parse.h*
	Header file to include in order to have access to the library APIs.
*-ltraceevent*
	Linker switch to add when building a program that uses the library.
--

SEE ALSO
--------
_libtraceevent(3)_, _trace-cmd(1)_

AUTHOR
------
[verse]
--
*Steven Rostedt* <rostedt@goodmis.org>, author of *libtraceevent*.
*Tzvetomir Stoyanov* <tz.stoyanov@gmail.com>, author of this man page.
--
REPORTING BUGS
--------------
Report bugs to  <linux-trace-devel@vger.kernel.org>

LICENSE
-------
libtraceevent is Free Software licensed under the GNU LGPL 2.1

RESOURCES
---------
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
