--- /dev/null
+--- ./doc/screen.1.org Wed Jun 19 13:36:55 2002
++++ ./doc/screen.1 Wed Jun 19 13:47:46 2002
+@@ -1040,7 +1040,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
+@@ -1308,7 +1308,7 @@
+ .br
+ .ti -2n
+ \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.
+ .br
+ This example demonstrates how to dump the whole scrollback buffer
+@@ -2940,7 +2940,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.
+ .sp
+ .ne 3
+ .BR "writelock " [ on | "off\fR|\fBauto\fR]"
+@@ -4284,7 +4284,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.c.org Mon Feb 11 13:39:06 2002
++++ ./screen.c Wed Jun 19 14:00:37 2002
+@@ -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;
+@@ -285,13 +286,18 @@
+ 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')))
+@@ -435,9 +441,6 @@
+ timestring = SaveStr("%c:%s %M %d %H%? %l%?");
+ wlisttit = SaveStr("Num Name%=Flags");
+ wliststr = SaveStr("%3n %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 */