From e1dc6e6d73eeb43c3f5366e0f316c91a32e513f9 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Thu, 22 Sep 2011 19:55:15 -0700 Subject: [PATCH] Bind uv_tty_get_winsize --- lib/readline.js | 4 ++-- lib/tty_uv.js | 4 ++++ src/tty_wrap.cc | 30 +++++++++++------------------- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/lib/readline.js b/lib/readline.js index 6ced9a573e2..21422581096 100644 --- a/lib/readline.js +++ b/lib/readline.js @@ -95,12 +95,12 @@ function Interface(input, output, completer) { this.history = []; this.historyIndex = -1; - var winSize = tty.getWindowSize(output.fd); + var winSize = output.getWindowSize(); exports.columns = winSize[1]; if (process.listeners('SIGWINCH').length === 0) { process.on('SIGWINCH', function() { - var winSize = tty.getWindowSize(output.fd); + var winSize = output.getWindowSize(); exports.columns = winSize[1]; }); } diff --git a/lib/tty_uv.js b/lib/tty_uv.js index 95e7bd39517..89fe28b9ebb 100644 --- a/lib/tty_uv.js +++ b/lib/tty_uv.js @@ -369,3 +369,7 @@ WriteStream.prototype.clearLine = function(dir) { } }; + +WriteStream.prototype.getWindowSize = function() { + return this._handle.getWindowSize(); +}; diff --git a/src/tty_wrap.cc b/src/tty_wrap.cc index 0d3e0370688..9eceb82528a 100644 --- a/src/tty_wrap.cc +++ b/src/tty_wrap.cc @@ -6,16 +6,6 @@ namespace node { -#define UNWRAP \ - assert(!args.Holder().IsEmpty()); \ - assert(args.Holder()->InternalFieldCount() > 0); \ - TTYWrap* wrap = \ - static_cast(args.Holder()->GetPointerFromInternalField(0)); \ - if (!wrap) { \ - SetErrno(UV_EBADF); \ - return scope.Close(Integer::New(-1)); \ - } - using v8::Object; using v8::Handle; using v8::Local; @@ -31,6 +21,16 @@ using v8::Arguments; using v8::Integer; using v8::Undefined; +#define UNWRAP \ + assert(!args.Holder().IsEmpty()); \ + assert(args.Holder()->InternalFieldCount() > 0); \ + TTYWrap* wrap = \ + static_cast(args.Holder()->GetPointerFromInternalField(0)); \ + if (!wrap) { \ + SetErrno(UV_EBADF); \ + return scope.Close(Integer::New(-1)); \ + } + class TTYWrap : StreamWrap { public: @@ -115,15 +115,7 @@ class TTYWrap : StreamWrap { static Handle SetRawMode(const Arguments& args) { HandleScope scope; - assert(!args.Holder().IsEmpty()); - assert(args.Holder()->InternalFieldCount() > 0); - TTYWrap* wrap = - static_cast(args.Holder()->GetPointerFromInternalField(0)); - - if (!wrap) { - SetErrno(UV_EBADF); - return scope.Close(Integer::New(-1)); - } + UNWRAP int r = uv_tty_set_mode(&wrap->handle_, args[0]->IsTrue());