xref: /plan9/sys/src/libc/9sys/iounit.c (revision 9a747e4fd48b9f4522c70c07e8f882a15030f964)
1*9a747e4fSDavid du Colombier #include <u.h>
2*9a747e4fSDavid du Colombier #include <libc.h>
3*9a747e4fSDavid du Colombier 
4*9a747e4fSDavid du Colombier /*
5*9a747e4fSDavid du Colombier  * Format:
6*9a747e4fSDavid du Colombier   3 r  M    4 (0000000000457def 11 00)   8192      512 /rc/lib/rcmain
7*9a747e4fSDavid du Colombier  */
8*9a747e4fSDavid du Colombier 
9*9a747e4fSDavid du Colombier int
iounit(int fd)10*9a747e4fSDavid du Colombier iounit(int fd)
11*9a747e4fSDavid du Colombier {
12*9a747e4fSDavid du Colombier 	int i, cfd;
13*9a747e4fSDavid du Colombier 	char buf[128], *args[10];
14*9a747e4fSDavid du Colombier 
15*9a747e4fSDavid du Colombier 	snprint(buf, sizeof buf, "#d/%dctl", fd);
16*9a747e4fSDavid du Colombier 	cfd = open(buf, OREAD);
17*9a747e4fSDavid du Colombier 	if(cfd < 0)
18*9a747e4fSDavid du Colombier 		return 0;
19*9a747e4fSDavid du Colombier 	i = read(cfd, buf, sizeof buf-1);
20*9a747e4fSDavid du Colombier 	close(cfd);
21*9a747e4fSDavid du Colombier 	if(i <= 0)
22*9a747e4fSDavid du Colombier 		return 0;
23*9a747e4fSDavid du Colombier 	buf[i] = '\0';
24*9a747e4fSDavid du Colombier 	if(tokenize(buf, args, nelem(args)) != nelem(args))
25*9a747e4fSDavid du Colombier 		return 0;
26*9a747e4fSDavid du Colombier 	return atoi(args[7]);
27*9a747e4fSDavid du Colombier }
28