Hi all,

Please review this patch, I'm missing something. I can't bind stuff to
(i.e. s). When I try to "bind s stuff" screen freezes.

This feature is usefull when using a very slow remote shell session (SSH
over a bad GPRS connection). By locally preparing a command you can
enter a command and send it as bulk (without typos ;-)).

And, it might be handy to support the (undocumented) -k parameter
without parameter. I haven't added it yet.

TIA,
Dick
diff -udr screen-4.0.2.orig/comm.c screen-4.0.2/comm.c
--- screen-4.0.2.orig/comm.c	2003-09-08 16:25:08.000000000 +0200
+++ screen-4.0.2/comm.c	2008-08-06 17:06:04.000000000 +0200
@@ -286,7 +286,7 @@
   { "source",		ARGS_1 },
   { "split",		NEED_DISPLAY|ARGS_0 },
   { "startup_message",	ARGS_1 },
-  { "stuff",		NEED_LAYER|ARGS_12 },
+  { "stuff",		NEED_LAYER|ARGS_012 },
 #ifdef MULTIUSER
   { "su",		NEED_DISPLAY|ARGS_012 },
 #endif
diff -udr screen-4.0.2.orig/process.c screen-4.0.2/process.c
--- screen-4.0.2.orig/process.c	2003-09-18 14:53:54.000000000 +0200
+++ screen-4.0.2/process.c	2008-08-06 18:07:58.000000000 +0200
@@ -1018,6 +1018,18 @@
   return i;
 }
 
+static void
+StuffFin(buf, len, data)
+char *buf;
+int len;
+char *data;
+{
+  if (!len || !display)
+    return;
+   while(len)
+     LayProcess(&buf, &len);
+}
+
 /*ARGSUSED*/
 void
 DoAction(act, key)
@@ -1616,6 +1628,11 @@
     case RC_STUFF:
       s = *args;
       n = *argl;
+      if (!args[0])
+        {
+          Input("Stuff:", 7, INP_COOKED, StuffFin, NULL);
+          break;
+        }
       if (args[1])
 	{
 	  if (strcmp(s, "-k"))

Reply via email to