]>
Commit | Line | Data |
---|---|---|
d99a0153 CW |
1 | /* |
2 | * CDDL HEADER START | |
3 | * | |
4 | * This file and its contents are supplied under the terms of the | |
5 | * Common Development and Distribution License ("CDDL"), version 1.0. | |
6 | * You may only use this file in accordance with the terms of version | |
7 | * 1.0 of the CDDL. | |
8 | * | |
9 | * A full copy of the text of the CDDL should have accompanied this | |
10 | * source. A copy of the CDDL is also available via the Internet at | |
11 | * http://www.illumos.org/license/CDDL. | |
12 | * | |
13 | * CDDL HEADER END | |
14 | */ | |
15 | ||
16 | /* | |
234c91c5 | 17 | * Copyright (c) 2016, 2017 by Delphix. All rights reserved. |
d99a0153 CW |
18 | */ |
19 | ||
20 | #include <sys/zcp_global.h> | |
21 | ||
22 | #include <sys/lua/lua.h> | |
23 | #include <sys/lua/lauxlib.h> | |
24 | ||
25 | typedef struct zcp_errno_global { | |
26 | const char *zeg_name; | |
27 | int zeg_errno; | |
28 | } zcp_errno_global_t; | |
29 | ||
30 | static const zcp_errno_global_t errno_globals[] = { | |
31 | {"EPERM", EPERM}, | |
32 | {"ENOENT", ENOENT}, | |
33 | {"ESRCH", ESRCH}, | |
34 | {"EINTR", EINTR}, | |
35 | {"EIO", EIO}, | |
36 | {"ENXIO", ENXIO}, | |
37 | {"E2BIG", E2BIG}, | |
38 | {"ENOEXEC", ENOEXEC}, | |
39 | {"EBADF", EBADF}, | |
40 | {"ECHILD", ECHILD}, | |
41 | {"EAGAIN", EAGAIN}, | |
42 | {"ENOMEM", ENOMEM}, | |
43 | {"EACCES", EACCES}, | |
44 | {"EFAULT", EFAULT}, | |
45 | {"ENOTBLK", ENOTBLK}, | |
46 | {"EBUSY", EBUSY}, | |
47 | {"EEXIST", EEXIST}, | |
48 | {"EXDEV", EXDEV}, | |
49 | {"ENODEV", ENODEV}, | |
50 | {"ENOTDIR", ENOTDIR}, | |
51 | {"EISDIR", EISDIR}, | |
52 | {"EINVAL", EINVAL}, | |
53 | {"ENFILE", ENFILE}, | |
54 | {"EMFILE", EMFILE}, | |
55 | {"ENOTTY", ENOTTY}, | |
56 | {"ETXTBSY", ETXTBSY}, | |
57 | {"EFBIG", EFBIG}, | |
58 | {"ENOSPC", ENOSPC}, | |
59 | {"ESPIPE", ESPIPE}, | |
60 | {"EROFS", EROFS}, | |
61 | {"EMLINK", EMLINK}, | |
62 | {"EPIPE", EPIPE}, | |
63 | {"EDOM", EDOM}, | |
64 | {"ERANGE", ERANGE}, | |
234c91c5 CW |
65 | {"EDEADLK", EDEADLK}, |
66 | {"ENOLCK", ENOLCK}, | |
67 | {"ECANCELED", ECANCELED}, | |
68 | {"ENOTSUP", ENOTSUP}, | |
d99a0153 | 69 | {"EDQUOT", EDQUOT}, |
234c91c5 | 70 | {"ENAMETOOLONG", ENAMETOOLONG}, |
d99a0153 CW |
71 | {0, 0} |
72 | }; | |
73 | ||
74 | static void | |
75 | zcp_load_errno_globals(lua_State *state) | |
76 | { | |
77 | const zcp_errno_global_t *global = errno_globals; | |
78 | while (global->zeg_name != NULL) { | |
79 | lua_pushnumber(state, (lua_Number)global->zeg_errno); | |
80 | lua_setglobal(state, global->zeg_name); | |
81 | global++; | |
82 | } | |
83 | } | |
84 | ||
85 | void | |
86 | zcp_load_globals(lua_State *state) | |
87 | { | |
88 | zcp_load_errno_globals(state); | |
89 | } |