--- screen-4.6.1/doc/screen.1.orig 2017-07-12 19:34:02.890716565 +0200 +++ screen-4.6.1/doc/screen.1 2017-07-12 19:34:56.057382623 +0200 @@ -1226,7 +1226,7 @@ .PP Change the filename used for reading and writing with the paste buffer. If the optional argument to the \*Qbufferfile\*U command is omitted, -the default setting (\*Q/tmp/screen\-exchange\*U) is reactivated. +the default setting (\*Q$HOME/.screen\-exchange\*U) is reactivated. The following example will paste the system's password file into the .I screen @@ -1540,7 +1540,7 @@ \fBA\fP toggles in append mode and sets a (second) mark. .PP \fB>\fP sets the (second) mark and writes the contents of the paste buffer to -the screen-exchange file (/tmp/screen\-exchange per default) once copy-mode is +the screen-exchange file ($HOME/.screen\-exchange per default) once copy-mode is finished. .PP This example demonstrates how to dump the whole scrollback buffer @@ -3651,7 +3651,7 @@ users on the same host. If an encoding is specified the paste buffer is recoded on the fly to match the encoding. The filename can be set with the \fIbufferfile\fP -command and defaults to \*Q/tmp/screen\-exchange\*U. +command and defaults to \*Q$HOME/.screen\-exchange\*U. .RE .TP .BR "writelock " [ on | "off\fR|\fBauto\fR]" @@ -5030,7 +5030,7 @@ Written by the "termcap" output function .IP /tmp/screens/screen\-exchange or -.IP /tmp/screen\-exchange +.IP $HOME/.screen\-exchange .I screen `interprocess communication buffer' .IP hardcopy.[0-9] --- ./doc/screen.texinfo.org Wed Jun 19 13:36:55 2002 +++ ./doc/screen.texinfo Wed Jun 19 13:49:42 2002 @@ -3000,7 +3000,7 @@ @noindent @kbd{>} sets the (second) mark and writes the contents of the paste buffer -to the screen-exchange file (@file{/tmp/screen-exchange} per default) +to the screen-exchange file (@file{$HOME/.screen-exchange} per default) once copy-mode is finished. @xref{Screen Exchange}.@* This example demonstrates how to dump the whole scrollback buffer to that file: @*@kbd{C-a [ g SPACE G $ >}. @@ -3124,7 +3124,7 @@ (none)@* Change the filename used for reading and writing with the paste buffer. If the @var{exchange-file} parameter is omitted, @code{screen} reverts -to the default of @file{/tmp/screen-exchange}. The following example +to the default of @file{$HOME/.screen-exchange}. The following example will paste the system's password file into the screen window (using the paste buffer, where a copy remains): @@ -4843,7 +4843,7 @@ Written by the @code{dumptermcap} command @item /usr/tmp/screens/screen-exchange or -@itemx /tmp/screen-exchange +@itemx $HOME/.screen-exchange @code{screen} interprocess communication buffer @item hardcopy.[0-9] --- ./etc/etcscreenrc.org Sat Apr 28 17:25:34 2001 +++ ./etc/etcscreenrc Wed Jun 19 13:51:34 2002 @@ -1,6 +1,6 @@ # # This is an example for the global screenrc file. -# You may want to install this file as /usr/local/etc/screenrc. +# You may want to install this file as /etc/screenrc. # Check config.h for the exact location. # # Flaws of termcap and standard settings are done here. @@ -92,3 +92,6 @@ bind 'O' login off bind '}' history +# On Debian GNU/Linux, `<--' (Backspace key) should send char `\177': +bindkey -k kb stuff "\177" + --- ./process.c.org Mon Feb 11 13:30:08 2002 +++ ./process.c Wed Jun 19 13:52:22 2002 @@ -2356,7 +2356,7 @@ #ifdef COPY_PASTE case RC_BUFFERFILE: if (*args == 0) - BufferFile = SaveStr(DEFAULT_BUFFERFILE); + BufferFile = SaveStr(bufferfile); else if (ParseSaveStr(act, &BufferFile)) break; if (msgok) --- screen-4.5.0/screen.c~ 2017-01-19 11:46:42.000000000 +0200 +++ screen-4.5.0/screen.c 2017-01-19 11:47:53.835503179 +0200 @@ -109,6 +109,7 @@ FILE *dfp; #endif +char bufferfile[MAXPATHLEN]; extern char Term[], screenterm[], **environ, Termcap[]; int force_vt = 1; @@ -271,7 +272,7 @@ char *name; struct passwd *ppp; { - int n; + int n, len; #ifdef SHADOWPW struct spwd *sss = NULL; static char *spw = NULL; @@ -303,11 +303,16 @@ pw_try_again: #endif n = 0; + len = 13; if (ppp->pw_passwd[0] == '#' && ppp->pw_passwd[1] == '#' && strcmp(ppp->pw_passwd + 2, ppp->pw_name) == 0) n = 13; - for (; n < 13; n++) { + else if (!strncmp(ppp->pw_passwd, "$1$", 3)) { /* MD5-based passwords */ + n = 13; + len = 34; + } + for (; n < len; n++) { char c = ppp->pw_passwd[n]; - if (!(c == '.' || c == '/' || c == '$' || + if (!(c == '.' || c == '/' || (len == 34 && c == '$') || (c >= '0' && c <= '9') || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))) @@ -479,9 +479,6 @@ timestring = SaveStr("%c:%s %M %d %H%? %l%?"); wlisttit = SaveStr(" Num Name%=Flags"); wliststr = SaveStr("%4n %t%=%f"); -#ifdef COPY_PASTE - BufferFile = SaveStr(DEFAULT_BUFFERFILE); -#endif ShellProg = NULL; #ifdef POW_DETACH PowDetachString = 0; @@ -902,6 +905,8 @@ #endif /* DEBUG */ } + snprintf(bufferfile,sizeof(bufferfile),"%s/.screen-exchange", home); + BufferFile = SaveStr(bufferfile); #ifdef _MODE_T oumask = umask(0); /* well, unsigned never fails? jw. */ #else --- ./screen.h.org Tue Jan 8 16:42:45 2002 +++ ./screen.h Wed Jun 19 14:01:15 2002 @@ -44,6 +44,7 @@ #include "layer.h" #include "term.h" +extern char bufferfile[MAXPATHLEN]; #ifdef DEBUG # define STATIC /* a function that the debugger should see */ --- ./window.c.org Tue Jan 8 20:47:31 2002 +++ ./window.c Wed Jun 19 14:03:39 2002 @@ -1549,6 +1549,12 @@ FreePseudowin(w); return -1; } + if (ioctl(w->w_ptyfd, TIOCPKT, (char *)&flag)) + { + Msg(errno, "TIOCPKT ioctl on parent"); + FreePseudowin(w); + return -1; + } } #endif /* TIOCPKT */ @@ -1587,6 +1593,14 @@ w->w_readev.condpos = w->w_readev.condneg = 0; free((char *)pwin); w->w_pwin = NULL; +#ifdef TIOCPKT + { + int flag = 1; + + if (ioctl(w->w_ptyfd, TIOCPKT, (char *)&flag)) + Msg(errno, "TIOCPKT reset on parent failed"); + } +#endif /* TIOCPKT */ } #endif /* PSEUDOS */