/* from Dale Schumacher's dLibs library */

/* these will have to be adjusted at some time ++jrb */
/* use these with caution, TOS 1.4 still has double re-direction bug! */

#include <stddef.h>
#include <unistd.h>
#include <fcntl.h>
#include <osbind.h>
#include <errno.h>

int dup(handle)
	int handle;
{
	register int rv;

	rv = Fdup(handle);
	if(( rv < (__SMALLEST_VALID_HANDLE)) ||
	   (__OPEN_INDEX(rv) >= __NHANDLES) ) {
		errno = -rv; rv = -1;
	} else {
	    __open_stat[__OPEN_INDEX(rv)] =
		__open_stat[__OPEN_INDEX(handle)];
	}

	return(rv);
}

int dup2(handle1, handle2)
	int handle1, handle2;
{
	int rv;

	close(handle2);
	rv = Fforce(handle2, handle1);
	if ((rv < 0) ||
	    (__OPEN_INDEX(handle2) >= __NHANDLES))
		errno = -rv;
	else
	    __open_stat[__OPEN_INDEX(handle2)] =
		__open_stat[__OPEN_INDEX(handle1)];
	return (rv < 0) ? -1 : handle2;
}
