diff --git a/NT/tools/lib.pike b/NT/tools/lib.pike
index 238b0c5cc76af4cdb30cc3ef58d46bed9e8da4f1..ae47ec08465bed940b1473ddd2ee1d5acc2f7b79 100644
--- a/NT/tools/lib.pike
+++ b/NT/tools/lib.pike
@@ -84,14 +84,19 @@ int silent_do_cmd(string *cmd, mixed|void filter, int|void silent)
       for(int e=0;e<sizeof(cmd);e++)
 	f->write(sprintf("%4c%s",strlen(cmd[e]),cmd[e]));
 
-      if(f->proxy)
-	f->proxy(Stdio.File("stdin"));
-      else
+//      if(f->proxy)
+//	f->proxy(Stdio.File("stdin"));
+//      else
+//      werror("FNORD\n");
 	thread_create(lambda(object f)
 		      {
 			object stdin=Stdio.File("stdin");
 			while(string s=stdin->read(1000,1))
+			{
+			  if(!strlen(s)) break;
 			  f->write(s);
+			}
+			f->close("w");
 		      },f);
 
       while(1)
@@ -107,7 +112,8 @@ int silent_do_cmd(string *cmd, mixed|void filter, int|void silent)
       if(filter) filter(ret);
       sscanf(f->read(4),"%4c",int code);
       f->close("r");
-      f->close("w");
+//      f->close("w");
+//      werror("Closing stdout.\n");
       destruct(f);
       return code;
   }