/* Copyright (c) 2016 Google Inc.
 * Barret Rhoden <brho@cs.berkeley.edu>
 * See LICENSE for details.
 *
 * Pipes, now with openat! */

#include <errno.h>
#include <unistd.h>
#include <stddef.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int __pipe2(int pipedes[2], int flags)
{
	int dirfd, dfd, d1fd, old_errno;
	char old_errstr[MAX_ERRSTR_LEN];

	if (!pipedes) {
		__set_errno(EFAULT);
		return -1;
	}
	dirfd = open("#pipe", O_PATH | (flags & O_CLOEXEC));
	if (dirfd < 0)
		return -1;
	dfd = openat(dirfd, "data", O_RDWR | flags);
	if (dfd < 0) {
		save_err(&old_errno, old_errstr);
		close(dirfd);
		restore_err(&old_errno, old_errstr);
		return -1;
	}
	d1fd = openat(dirfd, "data1", O_RDWR | flags);
	if (d1fd < 0) {
		save_err(&old_errno, old_errstr);
		close(dfd);
		close(dirfd);
		restore_err(&old_errno, old_errstr);
		return -1;
	}
	pipedes[0] = dfd;
	pipedes[1] = d1fd;
	close(dirfd);
	return 0;
}
weak_alias(__pipe2, pipe2)
