Lines Matching defs:pdes
83 pdes_get(int *pdes, const char **type)
95 if (socketpair(AF_LOCAL, stype, 0, pdes) < 0)
98 fcntl(pdes[0], F_SETFD, FD_CLOEXEC);
99 fcntl(pdes[1], F_SETFD, FD_CLOEXEC);
104 if (pipe2(pdes, flags) == -1)
107 if (pipe(pdes) == -1)
109 fcntl(pdes[0], F_SETFL, fcntl(pdes[0], F_GETFL) | flags);
110 fcntl(pdes[1], F_SETFL, fcntl(pdes[1], F_GETFL) | flags);
116 cur->fp = fdopen(pdes[0], *type);
118 cur->fd = pdes[0];
121 cur->fp = fdopen(pdes[1], *type);
123 cur->fd = pdes[1];
130 (void)close(pdes[0]);
131 (void)close(pdes[1]);
138 pdes_child(int *pdes, const char *type)
143 (void)close(pdes[0]);
144 if (pdes[1] != STDOUT_FILENO) {
145 (void)dup2(pdes[1], STDOUT_FILENO);
146 (void)close(pdes[1]);
151 (void)close(pdes[1]);
152 if (pdes[0] != STDIN_FILENO) {
153 (void)dup2(pdes[0], STDIN_FILENO);
154 (void)close(pdes[0]);
171 pdes_parent(int *pdes, struct pid *cur, pid_t pid, const char *type)
175 (void)close(pdes[1]);
177 (void)close(pdes[0]);
186 pdes_error(int *pdes, struct pid *cur)
189 (void)close(pdes[0]);
190 (void)close(pdes[1]);
197 int pdes[2], serrno;
200 if ((cur = pdes_get(pdes, &type)) == NULL)
212 pdes_error(pdes, cur);
217 pdes_child(pdes, type);
223 pdes_parent(pdes, cur, pid, type);