summaryrefslogtreecommitdiff
path: root/net/SSLtelnet/files/patch-af
blob: 7baffcbb186657880a7de028d3b95bd6460b2e61 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
--- telnetd/sys_term.c.orig	Sat Aug  2 01:37:00 1997
+++ telnetd/sys_term.c	Sun Aug  6 16:15:37 2000
@@ -167,7 +167,7 @@
 struct termios termbuf, termbuf2;	/* pty control structure */
 #endif	/* USE_TERMIO */
 
-extern long time();
+extern time_t time();
 
 #ifndef STDIN_FILENO
 #define STDIN_FILENO fileno(stdin)
@@ -531,7 +531,7 @@
 	return(p);
 #else
 
-	register char c, *p1, *p2;
+	register char c, *p1, *p2, *cp;
 	register int i;
 
 #if defined(__GNUC__) || defined(__sgi)
@@ -548,20 +548,40 @@
 	p1 = &line[8];
 	p2 = &line[9];
 #endif
-
-	for (c = 'p'; c <= 's'; c++) {
+	for (cp = "pqrsPQRS"; *cp; cp++) {
 		struct stat stb;
 
-		*p1 = c;
+		*p1 = *cp;
 		*p2 = '0';
+		/*
+		 * This stat() check is just to keep us from
+		 * looping through all 256 combinations if there
+		 * aren't that many ptys available.
+		 */
 		if (stat(line, &stb) < 0)
 			break;
-		for (i = 0; i < 16; i++) {
-			*p2 = "0123456789abcdef"[i];
+		for (i = 0; i < 32; i++) {
+			*p2 = "0123456789abcdefghijklmnopqrstuv"[i];
 			p = open(line, 2);
 			if (p > 0) {
+#ifndef __hpux
 				line[5] = 't';
-				return(p);
+#else
+				for (p1 = &line[8]; *p1; p1++)
+					*p1 = *(p1+1);
+				line[9] = 't';
+#endif
+				chown(line, 0, 0);
+				chmod(line, 0600);
+#if defined(sun) && defined(TIOCGPGRP) && BSD < 199207
+				if (ioctl(p, TIOCGPGRP, &dummy) == 0
+				    || errno != EIO) {
+					chmod(line, 0666);
+					close(p);
+					line[5] = 'p';
+				} else
+#endif /* defined(sun) && defined(TIOCGPGRP) && BSD < 199207 */
+					return(p);
 			}
 		}
 	}
@@ -733,11 +753,7 @@
 	else
 		termbuf.lflags &= ~LPASS8;
 #else
-	if (on) {
-		termbuf.c_iflag &= ~ISTRIP;
-	} else {
-		termbuf.c_iflag |= ISTRIP;
-	}
+	termbuf.c_iflag &= ~ISTRIP;
 #endif
 }