--- ./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 */