1 $NetBSD: patch-ac,v 1.7 2012/03/01 22:00:44 hans Exp $
3 --- fep_com.c.orig 1991-05-29 01:31:09.000000000 -0400
4 +++ fep_com.c 2005-12-10 16:59:27.000000000 -0500
10 +#include <sys/ioctl.h>
14 +#ifndef _POSIX_VDISABLE
15 +#define _POSIX_VDISABLE '\0'
22 +#include <inttypes.h>
24 #include <sys/param.h>
27 +#include <sys/types.h>
29 #include <sys/ioctl.h>
32 @@ -31,7 +45,7 @@ executeBuiltInFunction (comline, more)
33 char *comline, **more;
35 register FunctionTableEnt *ftp;
36 - char linebuf[MAXCOMLEN], *line;
37 + char linebuf[MAXCMDLEN], *line;
38 char *search_string();
41 @@ -93,7 +107,7 @@ is_same_command (a, b)
43 while (*a && *b && *a == *b)
45 - if ((*a == NULL || isspace (*a)) && (*b == NULL || isspace (*b)))
46 + if ((*a == '\0' || isspace ((unsigned char)*a)) && (*b == '\0' || isspace ((unsigned char)*b)))
50 @@ -295,7 +309,7 @@ unalias (comline)
54 - char line[MAXCOMLEN];
55 + char line[MAXCMDLEN];
59 @@ -352,8 +366,13 @@ unset(comline)
61 extern int Transparency;
63 -extern struct sgttyb slave_ttymode;
64 -extern struct sgttyb master_ttymode;
66 +#define ttystruct termios
67 +#elif defined(TIOCSETN)
68 +#define ttystruct sgttyb
70 +struct ttystruct master_ttymode; /* master tty mode */
71 +struct ttystruct slave_ttymode; /* slave tty mode */
72 extern int master, slave;
73 extern char slave_tty[];
75 @@ -368,7 +387,11 @@ toggle_through()
87 @@ -378,15 +401,26 @@ toggle_through()
92 + r = tcgetattr(slave_fd, &s);
94 r = ioctl (slave_fd, TIOCGETP, (char *) &s);
98 (void) close (slave_fd);
103 + s.c_lflag &= ~(ICANON);
106 + r = tcsetattr(0, TCSANOW, &s);
108 s.sg_flags |= CBREAK;
109 r = ioctl (0, TIOCSETN, (char *) & s);
113 (void) close (slave_fd);
114 @@ -394,7 +428,11 @@ toggle_through()
115 (void) close (slave_fd);
119 + r = tcsetattr(0, TCSANOW, & master_ttymode);
121 r = ioctl (0, TIOCSETN, (char *) & master_ttymode);
125 printf ("Can't change pty mode.\n");
126 @@ -410,7 +448,11 @@ toggle_through()
138 @@ -418,11 +460,17 @@ fix_transparency()
143 + r = tcgetattr(slave, &s);
144 + s.c_iflag |= ICRNL;
145 + s.c_oflag |= ONLCR;
147 r = ioctl (slave, TIOCGETP, (char *) &s);
149 * slave CRMOD is off, but master should be.
156 @@ -432,9 +480,19 @@ fix_transparency()
157 * If find slave tty mode is cbreak or raw, fix tty mode of stdout to
158 * same mode as slave and set Transparency ON.
160 - if (s.sg_flags & (CBREAK|RAW)) {
163 + if ((s.c_lflag & ICANON) == 0)
165 + if (s.sg_flags & (CBREAK|RAW))
168 if (Transparency == OFF) {
170 + r = tcsetattr(0, TCSANOW, & s);
172 r = ioctl (0, TIOCSETN, (char *) & s);
177 @@ -445,7 +503,11 @@ fix_transparency()
180 if (Transparency == ON) {
181 - r = ioctl (0, TIOCSETN, (char *) &master_ttymode);
183 + r = tcsetattr(0, TCSANOW, & master_ttymode);
185 + r = ioctl (0, TIOCSETN, (char *) & master_ttymode);
190 @@ -623,10 +685,10 @@ MORE *create_more(maxline)
194 - mp = (MORE *) malloc (sizeof (MORE));
195 + mp = malloc (sizeof (MORE));
202 mp->max_line = maxline;
203 @@ -738,9 +800,9 @@ char *line;
207 - char cwd[MAXPATHLEN], *getwd();
208 + char cwd[MAXPATHLEN];
210 - (void) getwd (cwd);
211 + (void) getcwd (cwd, sizeof(cwd));
212 printf ("%s\n", cwd);
215 @@ -755,7 +817,7 @@ fep_echo (comline)
216 argc = mkargv (comline, argv, MAXARGS);
219 - if (*argp && strcmp (*argp, "-n") == NULL) {
220 + if (*argp && strcmp (*argp, "-n") == 0) {
224 @@ -791,7 +853,7 @@ fep_command (comline)
231 argc = mkargv (comline, argv, MAXARGS);