zerror.c - libzahl - big integer library
(HTM) 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 }