uv_os_uname is not available in libuv 1.24.1, restore node 10.15.2 way
authorJérémy Lal <kapouer@melix.org>
Mon, 20 Apr 2020 07:44:09 +0000 (08:44 +0100)
committerJérémy Lal <kapouer@melix.org>
Mon, 20 Apr 2020 07:44:09 +0000 (08:44 +0100)
Last-Update: 2019-09-05
Forwarded: not-needed

Gbp-Pq: Name uv_stable.patch

src/node_os.cc
test/parallel/test-dgram-address.js

index 2cdc4ea8d05ced33198ee1ac952f957ea100ce69..1050125dea4e4c96a34131aab545ccaef0f9c426 100644 (file)
@@ -103,16 +103,44 @@ static void GetOSType(const FunctionCallbackInfo<Value>& args) {
 
 static void GetOSRelease(const FunctionCallbackInfo<Value>& 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;
+
+  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<int>(info.dwMajorVersion),
+           static_cast<int>(info.dwMinorVersion),
+           static_cast<int>(info.dwBuildNumber));
+  rval = release;
+#endif  // __POSIX__
 
-  args.GetReturnValue().Set(OneByteString(env->isolate(), info.release));
+  args.GetReturnValue().Set(OneByteString(env->isolate(), rval));
 }
 
 
index 2a41755e1c2ea68fb57c7ec68a426c55c71a9871..f14b910fc27a2bb7f47864ca1c6c9ef36dbfb42a 100644 (file)
@@ -77,5 +77,5 @@ if (common.hasIPv6) {
 
   assert.throws(() => {
     socket.address();
-  }, /^Error: getsockname EBADF$/);
+  }, /^Error: getsockname EINVAL$/);
 }