Blame


1 be22ae2d 2004-03-26 devnull #include <u.h>
2 8ad51794 2004-03-25 devnull #include <termios.h>
3 8ad51794 2004-03-25 devnull #include <sys/termios.h>
4 be22ae2d 2004-03-26 devnull #include <libc.h>
5 be22ae2d 2004-03-26 devnull #include "term.h"
6 e642beb5 2003-11-25 devnull
7 e642beb5 2003-11-25 devnull int
8 e642beb5 2003-11-25 devnull getpts(int fd[], char *slave)
9 e642beb5 2003-11-25 devnull {
10 e642beb5 2003-11-25 devnull fd[1] = open("/dev/ptmx", ORDWR);
11 e642beb5 2003-11-25 devnull if ((grantpt(fd[1]) < 0) || (unlockpt(fd[1]) < 0))
12 e642beb5 2003-11-25 devnull return -1;
13 e642beb5 2003-11-25 devnull fchmod(fd[1], 0622);
14 e642beb5 2003-11-25 devnull strcpy(slave, ptsname(fd[1]));
15 e642beb5 2003-11-25 devnull fd[0] = open(slave, OREAD);
16 e642beb5 2003-11-25 devnull return 0;
17 e642beb5 2003-11-25 devnull }
18 8ad51794 2004-03-25 devnull
19 be22ae2d 2004-03-26 devnull int
20 be22ae2d 2004-03-26 devnull childpty(int fd[], char *slave)
21 be22ae2d 2004-03-26 devnull {
22 be22ae2d 2004-03-26 devnull int sfd;
23 be22ae2d 2004-03-26 devnull
24 be22ae2d 2004-03-26 devnull close(fd[1]);
25 be22ae2d 2004-03-26 devnull setsid();
26 be22ae2d 2004-03-26 devnull sfd = open(slave, ORDWR);
27 be22ae2d 2004-03-26 devnull if(sfd < 0)
28 be22ae2d 2004-03-26 devnull sysfatal("open %s: %r\n", slave);
29 be22ae2d 2004-03-26 devnull return sfd;
30 be22ae2d 2004-03-26 devnull }
31 be22ae2d 2004-03-26 devnull
32 8ad51794 2004-03-25 devnull struct winsize ows;
33 8ad51794 2004-03-25 devnull
34 8ad51794 2004-03-25 devnull void
35 8ad51794 2004-03-25 devnull updatewinsize(int row, int col, int dx, int dy)
36 8ad51794 2004-03-25 devnull {
37 8ad51794 2004-03-25 devnull struct winsize ws;
38 8ad51794 2004-03-25 devnull
39 8ad51794 2004-03-25 devnull ws.ws_row = row;
40 8ad51794 2004-03-25 devnull ws.ws_col = col;
41 8ad51794 2004-03-25 devnull ws.ws_xpixel = dx;
42 8ad51794 2004-03-25 devnull ws.ws_ypixel = dy;
43 8ad51794 2004-03-25 devnull if(ws.ws_row != ows.ws_row || ws.ws_col != ows.ws_col)
44 be22ae2d 2004-03-26 devnull if(ioctl(rcfd, TIOCSWINSZ, &ws) < 0)
45 8ad51794 2004-03-25 devnull fprint(2, "ioctl: %r\n");
46 8ad51794 2004-03-25 devnull ows = ws;
47 8ad51794 2004-03-25 devnull }
48 8ad51794 2004-03-25 devnull