1libexplain(3) Library Functions Manual libexplain(3)
2
3
4
6 libexplain - Explain errno values returned by libc functions
7
9 cc ... -lexplain;
10
11 #include <libexplain/libexplain.h>
12
14 The libexplain library exists to give explanations of error reported by
15 system calls. The error message returned by strerror(3) tend to be
16 quite cryptic. By providing a specific error report for each system
17 call, a more detailed error message is possible, usually identifying
18 and describing the specific cause from amongst the numerous meanings
19 each errno value maps to.
20
21 Race Condition
22 The explanation of the cause of an error is dependent on the environ‐
23 ment of the error to remain unchanged, so that when libexplain gets
24 around to looking for the cause, the cause is still there. On a run‐
25 ning system, and particularly a multi‐user system, this is not always
26 possible.
27
28 If an incorrect explanation is provided, it is possible that the cause
29 is no longer present.
30
31 Compiling
32 Assuming the library header files has been installed into /usr/include,
33 and the library files have been installed into /usr/lib, compiling
34 against libexplain requires no special -I options.
35
36 When linking your pograms, add -lexplain to the list of libraries at
37 the end of your link line.
38 cc ... -lexplain
39
40 When you configure your package with GNU Autoconf, you need the large
41 file support macro
42 AC_SYS_LARGEFILE
43
44 If you aren't using GNU Autoconf, you will have to work out the needed
45 large file support requirements yourdelf.
46
47 There is a pkg‐config(1) package for you to use, too:
48 CFLAGS="$CFLAGS `pkg-config libexplain --cflags`" LIBS="$LIBS
49 `pkg-config libexplain --libs`"
50 This can make figuring out the command line requirements much easier.
51
52 Environment Variable
53 The EXPLAIN_OPTIONS environment variable may be used to control some of
54 the content in the messages. Options are separated by comma (“,”)
55 characters.
56
57 There are three ways to set an option:
58
59 1. The form “name=value” may be used explicitly. The values “true” and
60 “false” are used for boolean options.
61
62 2. An option name alone is interpreted to mean “name=true”.
63
64 3. The form “no‐name” is interpreted to mean “name=false”.
65
66 The following options are available:
67
6