xref: /plan9-contrib/sys/src/ape/lib/ap/plan9/pipe.c (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
1 #include <errno.h>
2 #include "lib.h"
3 #include "sys9.h"
4 
5 int
pipe(int fildes[2])6 pipe(int fildes[2])
7 {
8 	Fdinfo *fi;
9 	int i;
10 
11 	if(!fildes){
12 		errno = EFAULT;
13 		return -1;
14 	}
15 	if(_PIPE(fildes) < 0)
16 		_syserrno();
17 	else
18 	if(fildes[0] < 0 || fildes[0]>=OPEN_MAX ||
19 	   fildes[1] < 0 || fildes[1]>=OPEN_MAX) {
20 		errno = EMFILE;
21 		return -1;
22 	}
23 	for(i = 0; i <=1; i++) {
24 		fi = &_fdinfo[fildes[i]];
25 		fi->flags = FD_ISOPEN;
26 		fi->oflags = O_RDWR;
27 		fi->uid = 0;	/* none */
28 		fi->gid = 0;
29 	}
30 	return 0;
31 }
32