Blame


1 e642beb5 2003-11-25 devnull #include "9term.h"
2 e642beb5 2003-11-25 devnull
3 e642beb5 2003-11-25 devnull int
4 e642beb5 2003-11-25 devnull getchildwd(int pid, char *wdir, int bufn)
5 e642beb5 2003-11-25 devnull {
6 e642beb5 2003-11-25 devnull char path[256];
7 e642beb5 2003-11-25 devnull char cwd[256];
8 e642beb5 2003-11-25 devnull
9 e642beb5 2003-11-25 devnull if(getcwd(cwd, sizeof cwd) < 0)
10 e642beb5 2003-11-25 devnull return -1;
11 e642beb5 2003-11-25 devnull snprint(path, sizeof path, "/proc/%d/cwd", pid);
12 e642beb5 2003-11-25 devnull if(chdir(path) < 0)
13 e642beb5 2003-11-25 devnull return -1;
14 e642beb5 2003-11-25 devnull if(getcwd(wdir, bufn) < 0)
15 e642beb5 2003-11-25 devnull return -1;
16 e642beb5 2003-11-25 devnull chdir(cwd);
17 e642beb5 2003-11-25 devnull return 0;
18 e642beb5 2003-11-25 devnull }
19 e642beb5 2003-11-25 devnull
20 e642beb5 2003-11-25 devnull int
21 e642beb5 2003-11-25 devnull getpts(int fd[], char *slave)
22 e642beb5 2003-11-25 devnull {
23 e642beb5 2003-11-25 devnull fd[1] = open("/dev/ptmx", ORDWR);
24 e642beb5 2003-11-25 devnull if ((grantpt(fd[1]) < 0) || (unlockpt(fd[1]) < 0))
25 e642beb5 2003-11-25 devnull return -1;
26 e642beb5 2003-11-25 devnull fchmod(fd[1], 0622);
27 e642beb5 2003-11-25 devnull strcpy(slave, ptsname(fd[1]));
28 e642beb5 2003-11-25 devnull fd[0] = open(slave, OREAD);
29 e642beb5 2003-11-25 devnull return 0;
30 e642beb5 2003-11-25 devnull }