zerror.c - libzahl - big integer library
HTML git clone git://git.suckless.org/libzahl
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
zerror.c (667B)
---
1 /* See LICENSE file for copyright and license details. */
2 #include "internals.h"
3
4
5 #define LIST_ERRORS\
6 X(ZERROR_0_POW_0, "indeterminate form: 0:th power of 0")\
7 X(ZERROR_0_DIV_0, "indeterminate form: 0 divided by 0")\
8 X(ZERROR_DIV_0, "undefined result: division by 0")\
9 X(ZERROR_NEGATIVE, "argument must be non-negative")
10
11
12 enum zerror
13 zerror(const char **desc)
14 {
15 if (libzahl_error >= 0) {
16 if (desc)
17 *desc = strerror(libzahl_error);
18 errno = libzahl_error;
19 return ZERROR_ERRNO_SET;
20 }
21
22 if (desc) {
23 switch (-libzahl_error) {
24 #define X(V, D) case V: *desc = D; break;
25 LIST_ERRORS
26 #undef X
27 default:
28 abort();
29 }
30 }
31 return -libzahl_error;
32 }