blob: 6a37ab337851a56a2708834897f164ae930f066c (
plain)
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
|
#include "9term.h"
int
getchildwd(int pid, char *wdir, int bufn)
{
char path[256];
char cwd[256];
if(getcwd(cwd, sizeof cwd) < 0)
return -1;
snprint(path, sizeof path, "/proc/%d/cwd", pid);
if(chdir(path) < 0)
return -1;
if(getcwd(wdir, bufn) < 0)
return -1;
chdir(cwd);
return 0;
}
int
getpts(int fd[], char *slave)
{
fd[1] = open("/dev/ptmx", ORDWR);
if ((grantpt(fd[1]) < 0) || (unlockpt(fd[1]) < 0))
return -1;
fchmod(fd[1], 0622);
strcpy(slave, ptsname(fd[1]));
fd[0] = open(slave, OREAD);
return 0;
}
|