mirror of
https://github.com/nodejs/node-v0.x-archive.git
synced 2026-04-28 03:01:10 -04:00
Fix the OS module for win32
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user