SHA256
1
0
forked from pool/screen

Accepting request 83675 from Base:System

- Add sort command
- convert maxwin99bug.patch into a patch format quilt understands (forwarded request 83586 from trenn)

OBS-URL: https://build.opensuse.org/request/show/83675
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/screen?expand=0&rev=24
This commit is contained in:
Lars Vogdt 2011-09-20 08:09:48 +00:00 committed by Git OBS Bridge
commit 18656c205e
4 changed files with 132 additions and 19 deletions

View File

@ -1,19 +1,17 @@
*** screen-4.0.2/window.c Fri Dec 5 14:45:41 2003
--- screen-4.0.2/window.c Mon Jan 31 12:32:18 2011
***************
*** 1117,1123 ****
{
int pid;
char tebuf[25];
! char ebuf[10];
char shellbuf[7 + MAXPATHLEN];
char *proc;
#ifndef TIOCSWINSZ
--- 1117,1123 ----
{
int pid;
char tebuf[25];
! char ebuf[25]; // WINDOW=%d needs to be at least 3 digit!
char shellbuf[7 + MAXPATHLEN];
char *proc;
#ifndef TIOCSWINSZ
---
window.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: screen-4.0.3/window.c
===================================================================
--- screen-4.0.3.orig/window.c
+++ screen-4.0.3/window.c
@@ -1121,7 +1121,7 @@ char **args, *ttyn;
{
int pid;
char tebuf[25];
- char ebuf[10];
+ char ebuf[25]; // WINDOW=%d needs to be at least 3 digit!
char shellbuf[7 + MAXPATHLEN];
char *proc;
#ifndef TIOCSWINSZ

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Mon Sep 19 14:00:10 UTC 2011 - trenn@suse.de
- Add sort command
- convert maxwin99bug.patch into a patch format quilt understands
-------------------------------------------------------------------
Wed Jul 6 08:13:07 UTC 2011 - aj@suse.de

View File

@ -43,6 +43,7 @@ Patch5: screen-4.0.3-ipv6.patch
# upstream savannah#30880
Patch6: term_too_long.diff
Patch7: maxwin99bug.patch
Patch8: sort_command.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
@ -61,6 +62,7 @@ Documentation: man page
%patch5 -p1
%patch6 -p1
%patch7 -p1
%patch8 -p1
%build
CFLAGS="-DMAXWIN=1000 $RPM_OPT_FLAGS" ./configure --prefix=/usr --infodir=%{_infodir} \

107
sort_command.patch Normal file
View File

@ -0,0 +1,107 @@
screen: Introduce sort command
:sort
will sort all active screen windows ordered by title.
Limitations:
- Will only work in overview window (CTRL-a-")
- For unknown reasons does not always work.
Encountered on a screen session with about 100 active
windows and several users active, that the sorting
does not always take place.
Still, this command is very helpful for users who use
screen sessions with a huge amount of active windows.
Might apply with line offset to latest screen sources.
Got tested intensively with our screen over the last
years.
Please apply.
Signed-off-by: Thomas Renninger <trenn@suse.de>
comm.c | 1 +
doc/screen.1 | 5 +++++
process.c | 41 +++++++++++++++++++++++++++++++++++++++++
3 files changed, 47 insertions(+)
Index: screen-4.0.3/comm.c
===================================================================
--- screen-4.0.3.orig/comm.c
+++ screen-4.0.3/comm.c
@@ -283,6 +283,7 @@ struct comm comms[RC_LAST + 1] =
{ "sleep", ARGS_1 },
{ "slowpaste", NEED_FORE|ARGS_01 },
{ "sorendition", ARGS_012 },
+ { "sort", ARGS_0 },
{ "source", ARGS_1 },
{ "split", NEED_DISPLAY|ARGS_0 },
{ "startup_message", ARGS_1 },
Index: screen-4.0.3/process.c
===================================================================
--- screen-4.0.3.orig/process.c
+++ screen-4.0.3/process.c
@@ -2794,6 +2794,47 @@ int key;
WindowChanged((struct win *)0, 0);
}
break;
+ case RC_SORT:
+ if (fore)
+ {
+ /* Better do not allow this. Not sure what the utmp stuff in number
+ command above is for (you get four entries in e.g. /var/log/wtmp
+ per number switch). But I don't know enough about this.*/
+ Msg(0, "Sorting inside a window is not allowed. Push CTRL-a \" "
+ "and try again\n");
+ break;
+ }
+ i = 0;
+ if (!wtab[i] || !wtab[i+1])
+ {
+ Msg(0, "Less than two windows, sorting makes no sense.\n");
+ break;
+ }
+ for (i = 0; wtab[i+1] != NULL; i++)
+ {
+ for (n = i, nr = i; wtab[n+1] != NULL; n++)
+ {
+ if (strcmp(wtab[nr]->w_title,wtab[n+1]->w_title) > 0)
+ {
+ nr = n+1;
+ }
+ }
+ if (nr != i)
+ {
+ debug2("Exchange window %d and %d.\n", i, nr);
+ p = wtab[nr];
+ wtab[nr] = wtab[i];
+ wtab[i] = p;
+ wtab[nr]->w_number = nr;
+ wtab[i]->w_number = i;
+#ifdef MULTIUSER
+ /* exchange the acls for these windows. */
+ AclWinSwap(i, nr);
+#endif
+ }
+ }
+ WindowChanged((struct win *)0, 0);
+ break;
case RC_SILENCE:
n = fore->w_silence != 0;
i = fore->w_silencewait;
Index: screen-4.0.3/doc/screen.1
===================================================================
--- screen-4.0.3.orig/doc/screen.1
+++ screen-4.0.3/doc/screen.1
@@ -2678,6 +2678,11 @@ underlying system exposes flow control p
text.
.sp
.ne 3
+.B sort
+.PP
+Sort the windows in alphabetical order of the window tiles.
+.sp
+.ne 3
.BI "source " file
.PP
Read and execute commands from file \fIfile\fP. Source commands may