Index: src/d8.cc |
=================================================================== |
--- src/d8.cc (revision 2677) |
+++ src/d8.cc (working copy) |
@@ -167,9 +167,6 @@ |
Handle<Value> Shell::Read(const Arguments& args) { |
- if (args.Length() != 1) { |
- return ThrowException(String::New("Bad parameters")); |
- } |
String::Utf8Value file(args[0]); |
if (*file == NULL) { |
return ThrowException(String::New("Error loading file")); |
@@ -182,6 +179,19 @@ |
} |
+Handle<Value> Shell::ReadLine(const Arguments& args) { |
+ char line_buf[256]; |
+ if (fgets(line_buf, sizeof(line_buf), stdin) == NULL) { |
+ return ThrowException(String::New("Error reading line")); |
+ } |
+ int len = strlen(line_buf); |
+ if (line_buf[len - 1] == '\n') { |
+ --len; |
+ } |
+ return String::New(line_buf, len); |
+} |
+ |
+ |
Handle<Value> Shell::Load(const Arguments& args) { |
for (int i = 0; i < args.Length(); i++) { |
HandleScope handle_scope; |
@@ -404,6 +414,8 @@ |
global_template->Set(String::New("print"), FunctionTemplate::New(Print)); |
global_template->Set(String::New("write"), FunctionTemplate::New(Write)); |
global_template->Set(String::New("read"), FunctionTemplate::New(Read)); |
+ global_template->Set(String::New("readline"), |
+ FunctionTemplate::New(ReadLine)); |
global_template->Set(String::New("load"), FunctionTemplate::New(Load)); |
global_template->Set(String::New("quit"), FunctionTemplate::New(Quit)); |
global_template->Set(String::New("version"), FunctionTemplate::New(Version)); |
@@ -596,6 +608,8 @@ |
FunctionTemplate::New(Shell::Write)); |
global_template->Set(String::New("read"), |
FunctionTemplate::New(Shell::Read)); |
+ global_template->Set(String::New("readline"), |
+ FunctionTemplate::New(Shell::ReadLine)); |
global_template->Set(String::New("load"), |
FunctionTemplate::New(Shell::Load)); |
global_template->Set(String::New("yield"), |