mirror of https://github.com/lukechilds/node.git
Bert Belder
14 years ago
2 changed files with 76 additions and 0 deletions
@ -0,0 +1,68 @@ |
|||||
|
#include <node_stdio.h> |
||||
|
#include <platform_win32.h> |
||||
|
#include <v8.h> |
||||
|
|
||||
|
using namespace v8; |
||||
|
namespace node { |
||||
|
|
||||
|
|
||||
|
NO_IMPL(void, Stdio::DisableRawMode, , int fd); |
||||
|
NO_IMPL(void, Stdio::Flush, , ); |
||||
|
NO_IMPL(static Handle<Value>, OpenStdin, RET_V8UNDEFINED, const Arguments& args); |
||||
|
NO_IMPL(static Handle<Value>, IsStdinBlocking, RET_V8FALSE, const Arguments& args); |
||||
|
NO_IMPL(static Handle<Value>, SetRawMode, RET_V8TRUE, const Arguments& args); |
||||
|
NO_IMPL(static Handle<Value>, GetColumns, RET_V8INT(80), const Arguments& args); |
||||
|
NO_IMPL(static Handle<Value>, GetRows, RET_V8INT(25), const Arguments& args); |
||||
|
NO_IMPL(static Handle<Value>, IsATTY, RET_V8FALSE, const Arguments& args); |
||||
|
|
||||
|
|
||||
|
/*
|
||||
|
* STDERR should always be blocking & utf-8 |
||||
|
* TODO: check correctness |
||||
|
*/ |
||||
|
static Handle<Value> |
||||
|
WriteError (const Arguments& args) |
||||
|
{ |
||||
|
HandleScope scope; |
||||
|
|
||||
|
if (args.Length() < 1) |
||||
|
return Undefined(); |
||||
|
|
||||
|
String::Utf8Value msg(args[0]->ToString()); |
||||
|
|
||||
|
fprintf(stderr, "%s", (char*)*msg); |
||||
|
|
||||
|
return Undefined(); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/*
|
||||
|
* Assume that stdout is never blocking on windows |
||||
|
* TODO: check correctness and really implement this |
||||
|
*/ |
||||
|
static Handle<Value> |
||||
|
IsStdoutBlocking (const Arguments& args) |
||||
|
{ |
||||
|
return True(); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
void Stdio::Initialize(v8::Handle<v8::Object> target) { |
||||
|
target->Set(String::NewSymbol("stdoutFD"), Integer::New(STDOUT_FILENO)); |
||||
|
target->Set(String::NewSymbol("stderrFD"), Integer::New(STDERR_FILENO)); |
||||
|
target->Set(String::NewSymbol("stdinFD"), Integer::New(STDIN_FILENO)); |
||||
|
|
||||
|
NODE_SET_METHOD(target, "writeError", WriteError); |
||||
|
NODE_SET_METHOD(target, "openStdin", OpenStdin); |
||||
|
NODE_SET_METHOD(target, "isStdoutBlocking", IsStdoutBlocking); |
||||
|
NODE_SET_METHOD(target, "isStdinBlocking", IsStdinBlocking); |
||||
|
NODE_SET_METHOD(target, "setRawMode", SetRawMode); |
||||
|
NODE_SET_METHOD(target, "getColumns", GetColumns); |
||||
|
NODE_SET_METHOD(target, "getRows", GetRows); |
||||
|
NODE_SET_METHOD(target, "isatty", IsATTY); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} // namespace node
|
||||
|
|
||||
|
NODE_MODULE(node_stdio, node::Stdio::Initialize); |
Loading…
Reference in new issue