#include "alloc.h"
#include "bres.h"
+#include "mdup.h"
#include "report.h"
#include "sel.h"
{
int rfd[2], cfd[2];
pid_t kid;
+ mdup_fd md[2];
/* --- Make the pipes --- */
close(rfd[0]);
if (server) {
- dup2(cfd[0], STDIN_FILENO);
- dup2(rfd[1], STDOUT_FILENO);
- close(cfd[0]);
- close(rfd[1]);
- execlp(server, server, (char *)0);
- child(STDOUT_FILENO, STDIN_FILENO);
+ md[0].cur = cfd[0]; md[0].want = STDIN_FILENO;
+ md[1].cur = rfd[1]; md[1].want = STDOUT_FILENO;
+ if (mdup(md, 2) || execlp(server, server, (char *)0))
+ child(STDOUT_FILENO, STDIN_FILENO);
} else
child(rfd[1], cfd[0]);
_exit(1);