Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Fix the OS module for win32

  • Loading branch information...
commit c3ffbf219ca8049c901ec58d4d4b3df5b96c5097 1 parent 33118df
@piscisaureus piscisaureus authored
Showing with 53 additions and 8 deletions.
  1. +20 −1 src/node_os.cc
  2. +33 −7 src/platform_win32.cc
View
21 src/node_os.cc
@@ -12,6 +12,7 @@
# include <unistd.h> // gethostname, sysconf
# include <sys/utsname.h>
#else // __MINGW32__
+# include <windows.h> // GetVersionEx
# include <winsock2.h> // gethostname
#endif // __MINGW32__
@@ -36,6 +37,8 @@ static Handle<Value> GetHostname(const Arguments& args) {
static Handle<Value> GetOSType(const Arguments& args) {
HandleScope scope;
+
+#ifdef __POSIX__
char type[256];
struct utsname info;
@@ -44,17 +47,33 @@ static Handle<Value> GetOSType(const Arguments& args) {
type[strlen(info.sysname)] = 0;
return scope.Close(String::New(type));
+#else // __MINGW32__
+ return scope.Close(String::New("Windows_NT"));
+#endif
}
static Handle<Value> GetOSRelease(const Arguments& args) {
HandleScope scope;
char release[256];
+
+#ifdef __POSIX__
struct utsname info;
uname(&info);
strncpy(release, info.release, strlen(info.release));
release[strlen(info.release)] = 0;
+#else // __MINGW32__
+ OSVERSIONINFO info;
+ info.dwOSVersionInfoSize = sizeof(info);
+
+ if (GetVersionEx(&info) == 0) {
+ return Undefined();
+ }
+
+ sprintf(release, "%d.%d.%d", info.dwMajorVersion, info.dwMinorVersion, info.dwBuildNumber);
+#endif
+
return scope.Close(String::New(release));
}
@@ -131,4 +150,4 @@ void OS::Initialize(v8::Handle<v8::Object> target) {
} // namespace node
-NODE_MODULE(node_os, node::OS::Initialize);
+NODE_MODULE(node_os, node::OS::Initialize);
View
40 src/platform_win32.cc
@@ -2,7 +2,9 @@
#include "platform.h"
#include "platform_win32.h"
-#include <errno.h> // for MAXPATHLEN
+#include <v8.h>
+
+#include <errno.h>
#include <sys/param.h> // for MAXPATHLEN
#include <unistd.h> // getpagesize
#include <windows.h>
@@ -11,6 +13,8 @@
namespace node {
+using namespace v8;
+
static char buf[MAXPATHLEN + 1];
static char *process_title = NULL;
@@ -33,12 +37,12 @@ void winapi_perror(const char* prefix = NULL) {
}
-char** OS::SetupArgs(int argc, char *argv[]) {
+char** Platform::SetupArgs(int argc, char *argv[]) {
return argv;
}
-void OS::SetProcessTitle(char *title) {
+void Platform::SetProcessTitle(char *title) {
// We need to convert _title_ to UTF-16 first, because that's what windows uses internally.
// It would be more efficient to use the UTF-16 value that we can obtain from v8,
// but it's not accessible from here.
@@ -142,7 +146,7 @@ static inline char* _getProcessTitle() {
}
-const char* OS::GetProcessTitle(int *len) {
+const char* Platform::GetProcessTitle(int *len) {
// If the process_title was never read before nor explicitly set,
// we must query it with getConsoleTitleW
if (!process_title) {
@@ -159,17 +163,39 @@ const char* OS::GetProcessTitle(int *len) {
}
-int OS::GetMemory(size_t *rss, size_t *vsize) {
- // Not implemented
+int Platform::GetMemory(size_t *rss, size_t *vsize) {
*rss = 0;
*vsize = 0;
return 0;
}
-int OS::GetExecutablePath(char* buffer, size_t* size) {
+double Platform::GetFreeMemory() {
+ return -1;
+}
+
+double Platform::GetTotalMemory() {
+ return -1;
+}
+
+
+int Platform::GetExecutablePath(char* buffer, size_t* size) {
*size = 0;
return -1;
}
+
+int Platform::GetCPUInfo(Local<Array> *cpus) {
+ return -1;
+}
+
+
+double Platform::GetUptime() {
+ return -1;
+}
+
+int Platform::GetLoadAvg(Local<Array> *loads) {
+ return -1;
+}
+
} // namespace node
Please sign in to comment.
Something went wrong with that request. Please try again.