You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

306 lines
8.0 KiB

Index: attacher.c
--- attacher.c.orig 2017-01-17 20:28:29.361404481 +0100
+++ attacher.c 2017-01-18 13:03:46.295949000 +0100
@@ -721,7 +721,7 @@
printf("\n");
prg = getenv("LOCKPRG");
- if (prg && strcmp(prg, "builtin") && !access(prg, X_OK))
+ if (prg && (strcmp(prg, "builtin") || strcmp(prg,"builtin-passwd")) && !access(prg, X_OK))
{
signal(SIGCHLD, SIG_DFL);
debug1("lockterminal: '%s' seems executable, execl it!\n", prg);
@@ -738,7 +738,11 @@
Panic(errno, "setuid");
#endif
closeallfiles(0); /* important: /etc/shadow may be open */
- execl(prg, "SCREEN-LOCK", NULL);
+ if (strcmp(prg,"builtin-passwd"))
+ /* use system passsword for lock */
+ execl(prg, "SCREEN-LOCK", "-p", "-n", NULL);
+ else
+ execl(prg, "SCREEN-LOCK", NULL);
exit(errno);
}
if (pid == -1)
Index: configure
--- configure.orig 2017-01-17 20:29:21.885664935 +0100
+++ configure 2017-01-18 13:03:46.296845000 +0100
@@ -5020,7 +5020,8 @@
main()
{
- exit(strcmp(tgoto("%p1%d", 0, 1), "1") ? 0 : 1);
+ char *tgoto(const char *, int, int);
+ exit(strcmp(tgoto("%d%d", 0, 1), "1") ? 0 : 1);
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
@@ -5067,7 +5068,7 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SVR4 ptys..." >&5
$as_echo "$as_me: checking for SVR4 ptys..." >&6;}
sysvr4ptys=
-if test -c /dev/ptmx ; then
+if test -c /nonexistent ; then
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -5178,19 +5179,16 @@
fi
rm -f conftest*
-if test "$ptys" != "$pdir/pty??" ; then
-p0=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\).$/\1/g' | sort -u | tr -d '\012'`
-p1=`echo $ptys | tr ' ' '\012' | sed -e 's/^.*\(.\)$/\1/g' | sort -u | tr -d '\012'`
+# XXX: hardcoded to be devfs and various setups independent
+
cat >>confdefs.h <<_ACEOF
-#define PTYRANGE0 "$p0"
+#define PTYRANGE0 "pqrsPQRSlmnoLMNO"
_ACEOF
cat >>confdefs.h <<_ACEOF
-#define PTYRANGE1 "$p1"
+#define PTYRANGE1 "0123456789abcdefghijklmnopqrstuv"
_ACEOF
-fi
-
# Check whether --with-pty-mode was given.
if test "${with_pty_mode+set}" = set; then :
@@ -5417,6 +5415,8 @@
#if defined(SVR4) && !defined(DGUX)
#include <utmpx.h>
#define utmp utmpx
+#define pututline pututxline
+#define getutent getutxent
#else
#include <utmp.h>
#endif
@@ -5485,6 +5485,10 @@
#if defined(SVR4) && !defined(DGUX)
#include <utmpx.h>
#define utmp utmpx
+#define pututline pututxline
+#define getutent getutxent
+#define pututline pututxline
+#define getutent getutxent
#else
#include <utmp.h>
#endif
Index: os.h
--- os.h.orig 2017-01-17 20:28:29.389404620 +0100
+++ os.h 2017-01-18 13:03:46.296998000 +0100
@@ -252,7 +252,9 @@
#if defined(UTMPOK) || defined(BUGGYGETLOGIN)
# if defined(SVR4) && !defined(DGUX) && !defined(__hpux) && !defined(linux)
# include <utmpx.h>
+# ifdef UTMPX_FILE
# define UTMPFILE UTMPX_FILE
+# endif
# define utmp utmpx
# define getutent getutxent
# define getutid getutxid
@@ -524,6 +526,6 @@
/* Changing those you won't be able to attach to your old sessions
* when changing those values in official tree don't forget to bump
* MSG_VERSION */
-#define MAXTERMLEN 32
+#define MAXTERMLEN 63
#define MAXLOGINLEN 256
Index: osdef.h.in
--- osdef.h.in.orig 2017-01-17 20:28:29.389404620 +0100
+++ osdef.h.in 2017-01-18 13:03:46.297112000 +0100
@@ -111,7 +111,7 @@
extern int setpgid __P((int, int));
extern int tcsetpgrp __P((int, int));
#endif
-extern int ioctl __P((int, int, char *));
+extern int ioctl __P((int, unsigned long, ...));
extern int kill __P((int, int));
Index: pty.c
--- pty.c.orig 2017-01-17 20:28:29.393404640 +0100
+++ pty.c 2017-01-18 13:03:46.297241000 +0100
@@ -57,6 +57,11 @@
# include <sys/sysmacros.h>
#endif /* sgi */
+#if defined(__FreeBSD__)
+#include <termios.h>
+#include <libutil.h>
+#endif
+
#include "extern.h"
/*
Index: resize.c
--- resize.c.orig 2017-01-17 20:28:29.393404640 +0100
+++ resize.c 2017-01-18 13:03:46.297430000 +0100
@@ -683,6 +683,17 @@
he = MAXWIDTH;
}
+ if (wi > 1000)
+ {
+ Msg(0, "Window width too large, truncated");
+ wi = 1000;
+ }
+ if (he > 1000)
+ {
+ Msg(0, "Window height too large, truncated");
+ he = 1000;
+ }
+
if (p->w_width == wi && p->w_height == he && p->w_histheight == hi)
{
debug("ChangeWindowSize: No change.\n");
Index: screen.c
--- screen.c.orig 2017-01-17 20:28:29.397404660 +0100
+++ screen.c 2017-01-18 13:04:55.218656000 +0100
@@ -2222,7 +2222,7 @@
pn2 = pn = p + padlen;
r = winmsg_numrend;
while (p >= buf) {
- if (r && *p != 127 && p - buf == winmsg_rendpos[r - 1]) {
+ if (r && p - buf == winmsg_rendpos[r - 1]) {
winmsg_rendpos[--r] = pn - buf;
continue;
}
Index: termcap.c
--- termcap.c.orig 2017-01-17 20:28:29.397404660 +0100
+++ termcap.c 2017-01-18 13:03:46.298037000 +0100
@@ -360,11 +360,7 @@
if (D_CG0)
{
if (D_CS0 == 0)
-#ifdef TERMINFO
- D_CS0 = "\033(%p1%c";
-#else
- D_CS0 = "\033(%.";
-#endif
+ D_CS0 = "\033(%p1%c"; /* Old ncurses can't handle %. */
if (D_CE0 == 0)
D_CE0 = "\033(B";
D_AC = 0;
Index: terminfo/checktc.c
--- terminfo/checktc.c.orig 2017-01-17 20:27:18.977055464 +0100
+++ terminfo/checktc.c 2017-01-18 13:03:46.298168000 +0100
@@ -171,6 +171,7 @@
fflush(stdout);
}
+#ifndef __FreeBSD__
void CPutStr(s, c)
char *s;
int c;
@@ -178,6 +179,7 @@
tputs(tgoto(s, 0, c), 1, putcha);
fflush(stdout);
}
+#endif /* __FreeBSD__ */
void CCPutStr(s, x, y)
char *s;
Index: utmp.c
--- utmp.c.orig 2017-01-17 20:28:29.397404660 +0100
+++ utmp.c 2017-01-18 13:03:46.298363000 +0100
@@ -26,6 +26,7 @@
****************************************************************
*/
+#include <sys/param.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
@@ -409,12 +410,6 @@
register slot_t slot;
struct utmp u;
int saved_ut;
-#ifdef UTHOST
- char *p;
- char host[sizeof(D_loginhost) + 15];
-#else
- char *host = 0;
-#endif /* UTHOST */
wi->w_slot = (slot_t)0;
if (!utmpok || wi->w_type != W_TYPE_PTY)
@@ -435,51 +430,12 @@
makeuser(&u, stripdev(wi->w_tty), LoginName, wi->w_pid);
#ifdef UTHOST
- host[sizeof(host) - 15] = '\0';
- if (display)
- {
- strncpy(host, D_loginhost, sizeof(host) - 15);
- if (D_loginslot != (slot_t)0 && D_loginslot != (slot_t)-1 && host[0] != '\0')
- {
- /*
- * we want to set our ut_host field to something like
- * ":ttyhf:s.0" or
- * "faui45:s.0" or
- * "132.199.81.4:s.0" (even this may hurt..), but not
- * "faui45.informati"......:s.0
- * HPUX uses host:0.0, so chop at "." and ":" (Eric Backus)
- */
- for (p = host; *p; p++)
- if ((*p < '0' || *p > '9') && (*p != '.'))
- break;
- if (*p)
- {
- for (p = host; *p; p++)
- if (*p == '.' || (*p == ':' && p != host))
- {
- *p = '\0';
- break;
- }
- }
- }
- else
- {
- strncpy(host + 1, stripdev(D_usertty), sizeof(host) - 15 - 1);
- host[0] = ':';
- }
- }
- else
- strncpy(host, "local", sizeof(host) - 15);
-
- sprintf(host + strlen(host), ":S.%d", wi->w_number);
- debug1("rlogin hostname: '%s'\n", host);
-
# if !defined(_SEQUENT_) && !defined(sequent)
- strncpy(u.ut_host, host, sizeof(u.ut_host));
+ strncpy(u.ut_host, D_loginhost, sizeof(u.ut_host));
# endif
#endif /* UTHOST */
- if (pututslot(slot, &u, host, wi) == 0)
+ if (pututslot(slot, &u, D_loginhost, wi) == 0)
{
Msg(errno,"Could not write %s", UtmpName);
UT_CLOSE;
@@ -598,7 +554,7 @@
struct utmp *u;
{
u->ut_type = DEAD_PROCESS;
-#if (!defined(linux) || defined(EMPTY)) && !defined(__CYGWIN__)
+#if (!defined(linux) || defined(EMPTY)) && !defined(__CYGWIN__) && !defined(__FreeBSD__)
u->ut_exit.e_termination = 0;
u->ut_exit.e_exit = 0;
#endif
@@ -631,7 +587,11 @@
/* must use temp variable because of NetBSD/sparc64, where
* ut_xtime is long(64) but time_t is int(32) */
(void)time(&now);
+#if defined(__FreeBSD__)
+ u->ut_tv.tv_sec = now;
+#else
u->ut_time = now;
+#endif
}
static slot_t