13e12c5d1SDavid du Colombier #include <errno.h> 23e12c5d1SDavid du Colombier #include "lib.h" 33e12c5d1SDavid du Colombier #include "sys9.h" 43e12c5d1SDavid du Colombier 53e12c5d1SDavid du Colombier int pipe(int fildes[2])63e12c5d1SDavid du Colombierpipe(int fildes[2]) 73e12c5d1SDavid du Colombier { 8*219b2ee8SDavid du Colombier Fdinfo *fi; 9*219b2ee8SDavid du Colombier int i; 10*219b2ee8SDavid du Colombier 113e12c5d1SDavid du Colombier if(!fildes){ 123e12c5d1SDavid du Colombier errno = EFAULT; 133e12c5d1SDavid du Colombier return -1; 143e12c5d1SDavid du Colombier } 153e12c5d1SDavid du Colombier if(_PIPE(fildes) < 0) 163e12c5d1SDavid du Colombier _syserrno(); 17*219b2ee8SDavid du Colombier else 18*219b2ee8SDavid du Colombier if(fildes[0] < 0 || fildes[0]>=OPEN_MAX || 19*219b2ee8SDavid du Colombier fildes[1] < 0 || fildes[1]>=OPEN_MAX) { 203e12c5d1SDavid du Colombier errno = EMFILE; 213e12c5d1SDavid du Colombier return -1; 223e12c5d1SDavid du Colombier } 23*219b2ee8SDavid du Colombier for(i = 0; i <=1; i++) { 24*219b2ee8SDavid du Colombier fi = &_fdinfo[fildes[i]]; 25*219b2ee8SDavid du Colombier fi->flags = FD_ISOPEN; 26*219b2ee8SDavid du Colombier fi->oflags = O_RDWR; 27*219b2ee8SDavid du Colombier fi->uid = 0; /* none */ 28*219b2ee8SDavid du Colombier fi->gid = 0; 29*219b2ee8SDavid du Colombier } 303e12c5d1SDavid du Colombier return 0; 313e12c5d1SDavid du Colombier } 32