Skip to content

Commit

Permalink
os: implement os.type() using uv_os_uname()
Browse files Browse the repository at this point in the history
The happy path behavior should be identical on all
platforms except MinGW, which now identifies MinGW
separately from Windows.

PR-URL: #25659
Reviewed-By: Bartosz Sosnowski <bartosz@janeasystems.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Minwoo Jung <minwoo@nodesource.com>
Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
  • Loading branch information
cjihrig committed Jan 25, 2019
1 parent 80441c8 commit 16e4cd1
Showing 1 changed file with 5 additions and 11 deletions.
16 changes: 5 additions & 11 deletions src/node_os.cc
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
# include <netdb.h> // MAXHOSTNAMELEN on Solaris.
# include <unistd.h> // gethostname, sysconf
# include <sys/param.h> // MAXHOSTNAMELEN on Linux and the BSDs.
# include <sys/utsname.h>
#endif // __POSIX__

// Add Windows fallback.
Expand Down Expand Up @@ -84,21 +83,16 @@ static void GetHostname(const FunctionCallbackInfo<Value>& args) {

static void GetOSType(const FunctionCallbackInfo<Value>& args) {
Environment* env = Environment::GetCurrent(args);
const char* rval;
uv_utsname_t info;
int err = uv_os_uname(&info);

#ifdef __POSIX__
struct utsname info;
if (uname(&info) < 0) {
if (err != 0) {
CHECK_GE(args.Length(), 1);
env->CollectExceptionInfo(args[args.Length() - 1], errno, "uname");
env->CollectUVExceptionInfo(args[args.Length() - 1], err, "uv_os_uname");
return args.GetReturnValue().SetUndefined();
}
rval = info.sysname;
#else // __MINGW32__
rval = "Windows_NT";
#endif // __POSIX__

args.GetReturnValue().Set(OneByteString(env->isolate(), rval));
args.GetReturnValue().Set(OneByteString(env->isolate(), info.sysname));
}


Expand Down

0 comments on commit 16e4cd1

Please sign in to comment.