diff --git a/src/bun.js/bindings/ProcessBindingUV.cpp b/src/bun.js/bindings/ProcessBindingUV.cpp index e29cd4d397..49b2647df9 100644 --- a/src/bun.js/bindings/ProcessBindingUV.cpp +++ b/src/bun.js/bindings/ProcessBindingUV.cpp @@ -9,259 +9,455 @@ // clang-format off -#if !defined(E2BIG) -#define E2BIG 7 -#endif -#if !defined(EACCES) -#define EACCES 13 -#endif -#if !defined(EADDRINUSE) -#define EADDRINUSE 48 -#endif -#if !defined(EADDRNOTAVAIL) -#define EADDRNOTAVAIL 49 -#endif -#if !defined(EAFNOSUPPORT) -#define EAFNOSUPPORT 47 -#endif -#if !defined(EAGAIN) -#define EAGAIN 35 -#endif -#if !defined(EAI_ADDRFAMILY) -#define EAI_ADDRFAMILY 3000 -#endif -#if !defined(EAI_AGAIN) -#define EAI_AGAIN 3001 -#endif -#if !defined(EAI_BADFLAGS) -#define EAI_BADFLAGS 3002 -#endif -#if !defined(EAI_BADHINTS) -#define EAI_BADHINTS 3013 -#endif -#if !defined(EAI_CANCELED) -#define EAI_CANCELED 3003 -#endif -#if !defined(EAI_FAIL) -#define EAI_FAIL 3004 -#endif -#if !defined(EAI_FAMILY) -#define EAI_FAMILY 3005 -#endif -#if !defined(EAI_MEMORY) -#define EAI_MEMORY 3006 -#endif -#if !defined(EAI_NODATA) -#define EAI_NODATA 3007 -#endif -#if !defined(EAI_NONAME) -#define EAI_NONAME 3008 -#endif -#if !defined(EAI_OVERFLOW) -#define EAI_OVERFLOW 3009 -#endif -#if !defined(EAI_PROTOCOL) -#define EAI_PROTOCOL 3014 -#endif -#if !defined(EAI_SERVICE) -#define EAI_SERVICE 3010 -#endif -#if !defined(EAI_SOCKTYPE) -#define EAI_SOCKTYPE 3011 -#endif -#if !defined(EALREADY) -#define EALREADY 37 -#endif -#if !defined(EBADF) -#define EBADF 9 -#endif -#if !defined(EBUSY) -#define EBUSY 16 -#endif -#if !defined(ECANCELED) -#define ECANCELED 89 -#endif -#if !defined(ECHARSET) -#define ECHARSET 4080 -#endif -#if !defined(ECONNABORTED) -#define ECONNABORTED 53 -#endif -#if !defined(ECONNREFUSED) -#define ECONNREFUSED 61 -#endif -#if !defined(ECONNRESET) -#define ECONNRESET 54 -#endif -#if !defined(EDESTADDRREQ) -#define EDESTADDRREQ 39 -#endif -#if !defined(EEXIST) -#define EEXIST 17 -#endif -#if !defined(EFAULT) -#define EFAULT 14 -#endif -#if !defined(EFBIG) -#define EFBIG 27 -#endif -#if !defined(EHOSTUNREACH) -#define EHOSTUNREACH 65 -#endif -#if !defined(EINTR) -#define EINTR 4 -#endif -#if !defined(EINVAL) -#define EINVAL 22 -#endif -#if !defined(EIO) -#define EIO 5 -#endif -#if !defined(EISCONN) -#define EISCONN 56 -#endif -#if !defined(EISDIR) -#define EISDIR 21 -#endif -#if !defined(ELOOP) -#define ELOOP 62 -#endif -#if !defined(EMFILE) -#define EMFILE 24 -#endif -#if !defined(EMSGSIZE) -#define EMSGSIZE 40 -#endif -#if !defined(ENAMETOOLONG) -#define ENAMETOOLONG 63 -#endif -#if !defined(ENETDOWN) -#define ENETDOWN 50 -#endif -#if !defined(ENETUNREACH) -#define ENETUNREACH 51 -#endif -#if !defined(ENFILE) -#define ENFILE 23 -#endif -#if !defined(ENOBUFS) -#define ENOBUFS 55 -#endif -#if !defined(ENODEV) -#define ENODEV 19 -#endif -#if !defined(ENOENT) -#define ENOENT 2 -#endif -#if !defined(ENOMEM) -#define ENOMEM 12 -#endif -#if !defined(ENONET) -#define ENONET 4056 -#endif -#if !defined(ENOPROTOOPT) -#define ENOPROTOOPT 42 -#endif -#if !defined(ENOSPC) -#define ENOSPC 28 -#endif -#if !defined(ENOSYS) -#define ENOSYS 78 -#endif -#if !defined(ENOTCONN) -#define ENOTCONN 57 -#endif -#if !defined(ENOTDIR) -#define ENOTDIR 20 -#endif -#if !defined(ENOTEMPTY) -#define ENOTEMPTY 66 -#endif -#if !defined(ENOTSOCK) -#define ENOTSOCK 38 -#endif -#if !defined(ENOTSUP) -#define ENOTSUP 45 -#endif -#if !defined(EOVERFLOW) -#define EOVERFLOW 84 -#endif -#if !defined(EPERM) -#define EPERM 1 -#endif -#if !defined(EPIPE) -#define EPIPE 32 -#endif -#if !defined(EPROTO) -#define EPROTO 100 -#endif -#if !defined(EPROTONOSUPPORT) -#define EPROTONOSUPPORT 43 -#endif -#if !defined(EPROTOTYPE) -#define EPROTOTYPE 41 -#endif -#if !defined(ERANGE) -#define ERANGE 34 -#endif -#if !defined(EROFS) -#define EROFS 30 -#endif -#if !defined(ESHUTDOWN) -#define ESHUTDOWN 58 -#endif -#if !defined(ESPIPE) -#define ESPIPE 29 -#endif -#if !defined(ESRCH) -#define ESRCH 3 -#endif -#if !defined(ETIMEDOUT) -#define ETIMEDOUT 60 -#endif -#if !defined(ETXTBSY) -#define ETXTBSY 26 -#endif -#if !defined(EXDEV) -#define EXDEV 18 -#endif -#if !defined(UNKNOWN) -#define UNKNOWN 4094 -#endif -// this is intentionally always overridden -#if defined(EOF) -#undef EOF -#endif -#define EOF 4095 -#if !defined(ENXIO) -#define ENXIO 6 -#endif -#if !defined(EMLINK) -#define EMLINK 31 -#endif -#if !defined(EHOSTDOWN) -#define EHOSTDOWN 64 -#endif -#if !defined(EREMOTEIO) -#define EREMOTEIO 4030 -#endif -#if !defined(ENOTTY) -#define ENOTTY 25 -#endif -#if !defined(EFTYPE) -#define EFTYPE 79 -#endif -#if !defined(EILSEQ) -#define EILSEQ 92 -#endif -#if !defined(ESOCKTNOSUPPORT) -#define ESOCKTNOSUPPORT 44 -#endif -#if !defined(ENODATA) -#define ENODATA 96 -#endif -#if !defined(EUNATCH) -#define EUNATCH 4023 +#if EDOM > 0 +# define UV__ERR(x) (-(x)) +#else +# define UV__ERR(x) (x) +#endif + +#define UV__EOF (-4095) +#define UV__UNKNOWN (-4094) + +#define UV__EAI_ADDRFAMILY (-3000) +#define UV__EAI_AGAIN (-3001) +#define UV__EAI_BADFLAGS (-3002) +#define UV__EAI_CANCELED (-3003) +#define UV__EAI_FAIL (-3004) +#define UV__EAI_FAMILY (-3005) +#define UV__EAI_MEMORY (-3006) +#define UV__EAI_NODATA (-3007) +#define UV__EAI_NONAME (-3008) +#define UV__EAI_OVERFLOW (-3009) +#define UV__EAI_SERVICE (-3010) +#define UV__EAI_SOCKTYPE (-3011) +#define UV__EAI_BADHINTS (-3013) +#define UV__EAI_PROTOCOL (-3014) + +/* Only map to the system errno on non-Windows platforms. It's apparently + * a fairly common practice for Windows programmers to redefine errno codes. + */ +#if defined(E2BIG) && !defined(_WIN32) +# define UV__E2BIG UV__ERR(E2BIG) +#else +# define UV__E2BIG (-4093) +#endif + +#if defined(EACCES) && !defined(_WIN32) +# define UV__EACCES UV__ERR(EACCES) +#else +# define UV__EACCES (-4092) +#endif + +#if defined(EADDRINUSE) && !defined(_WIN32) +# define UV__EADDRINUSE UV__ERR(EADDRINUSE) +#else +# define UV__EADDRINUSE (-4091) +#endif + +#if defined(EADDRNOTAVAIL) && !defined(_WIN32) +# define UV__EADDRNOTAVAIL UV__ERR(EADDRNOTAVAIL) +#else +# define UV__EADDRNOTAVAIL (-4090) +#endif + +#if defined(EAFNOSUPPORT) && !defined(_WIN32) +# define UV__EAFNOSUPPORT UV__ERR(EAFNOSUPPORT) +#else +# define UV__EAFNOSUPPORT (-4089) +#endif + +#if defined(EAGAIN) && !defined(_WIN32) +# define UV__EAGAIN UV__ERR(EAGAIN) +#else +# define UV__EAGAIN (-4088) +#endif + +#if defined(EALREADY) && !defined(_WIN32) +# define UV__EALREADY UV__ERR(EALREADY) +#else +# define UV__EALREADY (-4084) +#endif + +#if defined(EBADF) && !defined(_WIN32) +# define UV__EBADF UV__ERR(EBADF) +#else +# define UV__EBADF (-4083) +#endif + +#if defined(EBUSY) && !defined(_WIN32) +# define UV__EBUSY UV__ERR(EBUSY) +#else +# define UV__EBUSY (-4082) +#endif + +#if defined(ECANCELED) && !defined(_WIN32) +# define UV__ECANCELED UV__ERR(ECANCELED) +#else +# define UV__ECANCELED (-4081) +#endif + +#if defined(ECHARSET) && !defined(_WIN32) +# define UV__ECHARSET UV__ERR(ECHARSET) +#else +# define UV__ECHARSET (-4080) +#endif + +#if defined(ECONNABORTED) && !defined(_WIN32) +# define UV__ECONNABORTED UV__ERR(ECONNABORTED) +#else +# define UV__ECONNABORTED (-4079) +#endif + +#if defined(ECONNREFUSED) && !defined(_WIN32) +# define UV__ECONNREFUSED UV__ERR(ECONNREFUSED) +#else +# define UV__ECONNREFUSED (-4078) +#endif + +#if defined(ECONNRESET) && !defined(_WIN32) +# define UV__ECONNRESET UV__ERR(ECONNRESET) +#else +# define UV__ECONNRESET (-4077) +#endif + +#if defined(EDESTADDRREQ) && !defined(_WIN32) +# define UV__EDESTADDRREQ UV__ERR(EDESTADDRREQ) +#else +# define UV__EDESTADDRREQ (-4076) +#endif + +#if defined(EEXIST) && !defined(_WIN32) +# define UV__EEXIST UV__ERR(EEXIST) +#else +# define UV__EEXIST (-4075) +#endif + +#if defined(EFAULT) && !defined(_WIN32) +# define UV__EFAULT UV__ERR(EFAULT) +#else +# define UV__EFAULT (-4074) +#endif + +#if defined(EHOSTUNREACH) && !defined(_WIN32) +# define UV__EHOSTUNREACH UV__ERR(EHOSTUNREACH) +#else +# define UV__EHOSTUNREACH (-4073) +#endif + +#if defined(EINTR) && !defined(_WIN32) +# define UV__EINTR UV__ERR(EINTR) +#else +# define UV__EINTR (-4072) +#endif + +#if defined(EINVAL) && !defined(_WIN32) +# define UV__EINVAL UV__ERR(EINVAL) +#else +# define UV__EINVAL (-4071) +#endif + +#if defined(EIO) && !defined(_WIN32) +# define UV__EIO UV__ERR(EIO) +#else +# define UV__EIO (-4070) +#endif + +#if defined(EISCONN) && !defined(_WIN32) +# define UV__EISCONN UV__ERR(EISCONN) +#else +# define UV__EISCONN (-4069) +#endif + +#if defined(EISDIR) && !defined(_WIN32) +# define UV__EISDIR UV__ERR(EISDIR) +#else +# define UV__EISDIR (-4068) +#endif + +#if defined(ELOOP) && !defined(_WIN32) +# define UV__ELOOP UV__ERR(ELOOP) +#else +# define UV__ELOOP (-4067) +#endif + +#if defined(EMFILE) && !defined(_WIN32) +# define UV__EMFILE UV__ERR(EMFILE) +#else +# define UV__EMFILE (-4066) +#endif + +#if defined(EMSGSIZE) && !defined(_WIN32) +# define UV__EMSGSIZE UV__ERR(EMSGSIZE) +#else +# define UV__EMSGSIZE (-4065) +#endif + +#if defined(ENAMETOOLONG) && !defined(_WIN32) +# define UV__ENAMETOOLONG UV__ERR(ENAMETOOLONG) +#else +# define UV__ENAMETOOLONG (-4064) +#endif + +#if defined(ENETDOWN) && !defined(_WIN32) +# define UV__ENETDOWN UV__ERR(ENETDOWN) +#else +# define UV__ENETDOWN (-4063) +#endif + +#if defined(ENETUNREACH) && !defined(_WIN32) +# define UV__ENETUNREACH UV__ERR(ENETUNREACH) +#else +# define UV__ENETUNREACH (-4062) +#endif + +#if defined(ENFILE) && !defined(_WIN32) +# define UV__ENFILE UV__ERR(ENFILE) +#else +# define UV__ENFILE (-4061) +#endif + +#if defined(ENOBUFS) && !defined(_WIN32) +# define UV__ENOBUFS UV__ERR(ENOBUFS) +#else +# define UV__ENOBUFS (-4060) +#endif + +#if defined(ENODEV) && !defined(_WIN32) +# define UV__ENODEV UV__ERR(ENODEV) +#else +# define UV__ENODEV (-4059) +#endif + +#if defined(ENOENT) && !defined(_WIN32) +# define UV__ENOENT UV__ERR(ENOENT) +#else +# define UV__ENOENT (-4058) +#endif + +#if defined(ENOMEM) && !defined(_WIN32) +# define UV__ENOMEM UV__ERR(ENOMEM) +#else +# define UV__ENOMEM (-4057) +#endif + +#if defined(ENONET) && !defined(_WIN32) +# define UV__ENONET UV__ERR(ENONET) +#else +# define UV__ENONET (-4056) +#endif + +#if defined(ENOSPC) && !defined(_WIN32) +# define UV__ENOSPC UV__ERR(ENOSPC) +#else +# define UV__ENOSPC (-4055) +#endif + +#if defined(ENOSYS) && !defined(_WIN32) +# define UV__ENOSYS UV__ERR(ENOSYS) +#else +# define UV__ENOSYS (-4054) +#endif + +#if defined(ENOTCONN) && !defined(_WIN32) +# define UV__ENOTCONN UV__ERR(ENOTCONN) +#else +# define UV__ENOTCONN (-4053) +#endif + +#if defined(ENOTDIR) && !defined(_WIN32) +# define UV__ENOTDIR UV__ERR(ENOTDIR) +#else +# define UV__ENOTDIR (-4052) +#endif + +#if defined(ENOTEMPTY) && !defined(_WIN32) +# define UV__ENOTEMPTY UV__ERR(ENOTEMPTY) +#else +# define UV__ENOTEMPTY (-4051) +#endif + +#if defined(ENOTSOCK) && !defined(_WIN32) +# define UV__ENOTSOCK UV__ERR(ENOTSOCK) +#else +# define UV__ENOTSOCK (-4050) +#endif + +#if defined(ENOTSUP) && !defined(_WIN32) +# define UV__ENOTSUP UV__ERR(ENOTSUP) +#else +# define UV__ENOTSUP (-4049) +#endif + +#if defined(EPERM) && !defined(_WIN32) +# define UV__EPERM UV__ERR(EPERM) +#else +# define UV__EPERM (-4048) +#endif + +#if defined(EPIPE) && !defined(_WIN32) +# define UV__EPIPE UV__ERR(EPIPE) +#else +# define UV__EPIPE (-4047) +#endif + +#if defined(EPROTO) && !defined(_WIN32) +# define UV__EPROTO UV__ERR(EPROTO) +#else +# define UV__EPROTO (-4046) +#endif + +#if defined(EPROTONOSUPPORT) && !defined(_WIN32) +# define UV__EPROTONOSUPPORT UV__ERR(EPROTONOSUPPORT) +#else +# define UV__EPROTONOSUPPORT (-4045) +#endif + +#if defined(EPROTOTYPE) && !defined(_WIN32) +# define UV__EPROTOTYPE UV__ERR(EPROTOTYPE) +#else +# define UV__EPROTOTYPE (-4044) +#endif + +#if defined(EROFS) && !defined(_WIN32) +# define UV__EROFS UV__ERR(EROFS) +#else +# define UV__EROFS (-4043) +#endif + +#if defined(ESHUTDOWN) && !defined(_WIN32) +# define UV__ESHUTDOWN UV__ERR(ESHUTDOWN) +#else +# define UV__ESHUTDOWN (-4042) +#endif + +#if defined(ESPIPE) && !defined(_WIN32) +# define UV__ESPIPE UV__ERR(ESPIPE) +#else +# define UV__ESPIPE (-4041) +#endif + +#if defined(ESRCH) && !defined(_WIN32) +# define UV__ESRCH UV__ERR(ESRCH) +#else +# define UV__ESRCH (-4040) +#endif + +#if defined(ETIMEDOUT) && !defined(_WIN32) +# define UV__ETIMEDOUT UV__ERR(ETIMEDOUT) +#else +# define UV__ETIMEDOUT (-4039) +#endif + +#if defined(ETXTBSY) && !defined(_WIN32) +# define UV__ETXTBSY UV__ERR(ETXTBSY) +#else +# define UV__ETXTBSY (-4038) +#endif + +#if defined(EXDEV) && !defined(_WIN32) +# define UV__EXDEV UV__ERR(EXDEV) +#else +# define UV__EXDEV (-4037) +#endif + +#if defined(EFBIG) && !defined(_WIN32) +# define UV__EFBIG UV__ERR(EFBIG) +#else +# define UV__EFBIG (-4036) +#endif + +#if defined(ENOPROTOOPT) && !defined(_WIN32) +# define UV__ENOPROTOOPT UV__ERR(ENOPROTOOPT) +#else +# define UV__ENOPROTOOPT (-4035) +#endif + +#if defined(ERANGE) && !defined(_WIN32) +# define UV__ERANGE UV__ERR(ERANGE) +#else +# define UV__ERANGE (-4034) +#endif + +#if defined(ENXIO) && !defined(_WIN32) +# define UV__ENXIO UV__ERR(ENXIO) +#else +# define UV__ENXIO (-4033) +#endif + +#if defined(EMLINK) && !defined(_WIN32) +# define UV__EMLINK UV__ERR(EMLINK) +#else +# define UV__EMLINK (-4032) +#endif + +/* EHOSTDOWN is not visible on BSD-like systems when _POSIX_C_SOURCE is + * defined. Fortunately, its value is always 64 so it's possible albeit + * icky to hard-code it. + */ +#if defined(EHOSTDOWN) && !defined(_WIN32) +# define UV__EHOSTDOWN UV__ERR(EHOSTDOWN) +#elif defined(__APPLE__) || \ + defined(__DragonFly__) || \ + defined(__FreeBSD__) || \ + defined(__NetBSD__) || \ + defined(__OpenBSD__) +# define UV__EHOSTDOWN (-64) +#else +# define UV__EHOSTDOWN (-4031) +#endif + +#if defined(EREMOTEIO) && !defined(_WIN32) +# define UV__EREMOTEIO UV__ERR(EREMOTEIO) +#else +# define UV__EREMOTEIO (-4030) +#endif + +#if defined(ENOTTY) && !defined(_WIN32) +# define UV__ENOTTY UV__ERR(ENOTTY) +#else +# define UV__ENOTTY (-4029) +#endif + +#if defined(EFTYPE) && !defined(_WIN32) +# define UV__EFTYPE UV__ERR(EFTYPE) +#else +# define UV__EFTYPE (-4028) +#endif + +#if defined(EILSEQ) && !defined(_WIN32) +# define UV__EILSEQ UV__ERR(EILSEQ) +#else +# define UV__EILSEQ (-4027) +#endif + +#if defined(EOVERFLOW) && !defined(_WIN32) +# define UV__EOVERFLOW UV__ERR(EOVERFLOW) +#else +# define UV__EOVERFLOW (-4026) +#endif + +#if defined(ESOCKTNOSUPPORT) && !defined(_WIN32) +# define UV__ESOCKTNOSUPPORT UV__ERR(ESOCKTNOSUPPORT) +#else +# define UV__ESOCKTNOSUPPORT (-4025) +#endif + +/* FreeBSD defines ENODATA in /usr/include/c++/v1/errno.h which is only visible + * if C++ is being used. Define it directly to avoid problems when integrating + * libuv in a C++ project. + */ +#if defined(ENODATA) && !defined(_WIN32) +# define UV__ENODATA UV__ERR(ENODATA) +#elif defined(__FreeBSD__) +# define UV__ENODATA (-9919) +#else +# define UV__ENODATA (-4024) +#endif + +#if defined(EUNATCH) && !defined(_WIN32) +# define UV__EUNATCH UV__ERR(EUNATCH) +#else +# define UV__EUNATCH (-4023) #endif #define BUN_UV_ERRNO_MAP(macro) \ @@ -368,7 +564,7 @@ JSC_DEFINE_HOST_FUNCTION(jsErrname, (JSGlobalObject * globalObject, JSC::CallFra auto err = arg0.toInt32(globalObject); #define CASE(name, desc) \ - if (err == -name) return JSValue::encode(JSC::jsString(vm, String(#name##_s))); + if (err == -UV__##name) return JSValue::encode(JSC::jsString(vm, String(#name##_s))); BUN_UV_ERRNO_MAP(CASE) #undef CASE @@ -389,7 +585,7 @@ JSC_DEFINE_HOST_FUNCTION(jsGetErrorMap, (JSGlobalObject * globalObject, JSC::Cal map->set(globalObject, JSC::jsNumber(value), arr); }; -#define PUT_PROPERTY(name, desc) putProperty(vm, map, globalObject, #name##_s, -name, desc##_s); +#define PUT_PROPERTY(name, desc) putProperty(vm, map, globalObject, #name##_s, -UV__##name, desc##_s); BUN_UV_ERRNO_MAP(PUT_PROPERTY) #undef PUT_PROPERTY @@ -410,7 +606,7 @@ JSObject* create(VM& vm, JSGlobalObject* globalObject) }; #define PUT_PROPERTY(name, desc) \ - putNamedProperty(vm, bindingObject, "UV_" #name##_s, -name); + putNamedProperty(vm, bindingObject, "UV_" #name##_s, -UV__##name); BUN_UV_ERRNO_MAP(PUT_PROPERTY) #undef PUT_PROPERTY