diff --git a/lib/modules/Stdio.pmod/Readline.pike b/lib/modules/Stdio.pmod/Readline.pike
index faef85d178844874d78b217c60fb3ab540a107a3..244b7314378facb24bb79eb024a3d9116ebdc32f 100644
--- a/lib/modules/Stdio.pmod/Readline.pike
+++ b/lib/modules/Stdio.pmod/Readline.pike
@@ -1,4 +1,4 @@
-// $Id: Readline.pike,v 1.18 1999/06/06 09:05:48 mirar Exp $
+// $Id: Readline.pike,v 1.19 1999/06/09 16:23:31 marcus Exp $
 
 class OutputController
 {
@@ -1246,21 +1246,27 @@ void set_blocking()
   set_nonblocking(0);
 }
 
-string read()
+string edit(string data, string|void local_prompt)
 {
   if(newline_func == read_newline)
     return 0;
   function oldnl = newline_func;
-  output_controller->write(prompt);
+  output_controller->write(local_prompt||prompt);
   initline();
   newline_func = read_newline;
   readtext = "";
   output_controller->enable();
+  insert(data, 0);
   int res = input_controller->run_blocking();
   set_nonblocking(oldnl);
   return (res>=0 || sizeof(readtext)) && readtext;
 }
 
+string read(string|void prompt)
+{
+  return edit("", prompt);
+}
+
 void enable_history(object(History)|int hist)
 {
   if (objectp(hist))