OrionLibC
Barry Importing existing Orion LibC 03048a9 (2 years, 2 months ago)diff --git a/unistd/dup.c b/unistd/dup.c new file mode 100644 index 0000000..a4aabfc --- /dev/null +++ b/unistd/dup.c @@ -0,0 +1,28 @@ +#include <sys/syscall.h> +#include <errno.h> + +/* Duplicate an open file descriptor */ +int +dup(int oldfd) +{ + int ret; + asm volatile("int $0x80" : "=a" (ret) : "0" (SYSCALL_DUP), + "c" (1), "S" (&oldfd)); + if (ret >= 0) + return ret; + errno = -ret; + return -1; +} + +/* Duplicate an open file descriptor to a specified file descriptor */ +int +dup2(int oldfd, int newfd) +{ + int ret; + asm volatile("int $0x80" : "=a" (ret) : "0" (SYSCALL_DUP2), + "c" (2), "S" (&oldfd)); + if (ret >= 0) + return ret; + errno = -ret; + return -1; +}