Description: uv_os_uname is not available in libuv 1.24.1, restore node 10.15.2 way Last-Update: 2019-09-05 Author: Jérémy Lal Forwarded: not-needed --- a/src/node_os.cc +++ b/src/node_os.cc @@ -103,16 +103,44 @@ static void GetOSRelease(const FunctionCallbackInfo& args) { Environment* env = Environment::GetCurrent(args); - uv_utsname_t info; - int err = uv_os_uname(&info); + const char* rval; - if (err != 0) { +#ifdef __POSIX__ + struct utsname info; + if (uname(&info) < 0) { CHECK_GE(args.Length(), 1); - env->CollectUVExceptionInfo(args[args.Length() - 1], err, "uv_os_uname"); + env->CollectExceptionInfo(args[args.Length() - 1], errno, "uname"); return args.GetReturnValue().SetUndefined(); } +# ifdef _AIX + char release[256]; + snprintf(release, sizeof(release), + "%s.%s", info.version, info.release); + rval = release; +# else + rval = info.release; +# endif +#else // Windows + char release[256]; + OSVERSIONINFOW info; - args.GetReturnValue().Set(OneByteString(env->isolate(), info.release)); + info.dwOSVersionInfoSize = sizeof(info); + + // Don't complain that GetVersionEx is deprecated; there is no alternative. + #pragma warning(suppress : 4996) + if (GetVersionExW(&info) == 0) + return; + + snprintf(release, + sizeof(release), + "%d.%d.%d", + static_cast(info.dwMajorVersion), + static_cast(info.dwMinorVersion), + static_cast(info.dwBuildNumber)); + rval = release; +#endif // __POSIX__ + + args.GetReturnValue().Set(OneByteString(env->isolate(), rval)); } --- a/test/parallel/test-dgram-address.js +++ b/test/parallel/test-dgram-address.js @@ -77,5 +77,5 @@ assert.throws(() => { socket.address(); - }, /^Error: getsockname EBADF$/); + }, /^Error: getsockname EINVAL$/); }