aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/9term/SunOS.c
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;
}