* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
+#include <errno.h>
#include <getopt.h>
#include <signal.h>
#include <stdbool.h>
err(EXIT_FAILURE, "failed to open: %s", file);
if (dup2(fd, fdescs[0].fd) < 0) {
+ int e = errno;
close(fd);
+ errno = e;
err(EXIT_FAILURE, "failed to dup %d -> %d", fd, fdescs[0].fd);
}
for (int i = 0; i < 2; i++) {
if (dup2(pd[i], fdescs[i].fd) < 0) {
+ int e = errno;
close(pd[0]);
close(pd[1]);
+ errno = e;
err(EXIT_FAILURE, "failed to dup %d -> %d",
pd[i], fdescs[i].fd);
}
err(EXIT_FAILURE, "failed to open: %s", dir);
if (dup2(fd, fdescs[0].fd) < 0) {
+ int e = errno;
close(fd);
+ errno = e;
err(EXIT_FAILURE, "failed to dup %d -> %d", fd, fdescs[0].fd);
}