summaryrefslogtreecommitdiffstats
path: root/sysif.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysif.c')
-rw-r--r--sysif.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sysif.c b/sysif.c
index 545992b5..bee235dd 100644
--- a/sysif.c
+++ b/sysif.c
@@ -454,6 +454,13 @@ static val wifcontinued(val status)
}
#endif
+static val dup_wrap(val old, val new)
+{
+ if (missingp(new))
+ return num(dup(c_num(old)));
+ return num(dup2(c_num(old), c_num(new)));
+}
+
#endif
#if HAVE_SYS_STAT
@@ -651,5 +658,6 @@ void sysif_init(void)
#ifdef WCONTINUED
reg_var(intern(lit("w-continued"), user_package), num_fast(WCONTINUED));
#endif
+ reg_fun(intern(lit("dupfd"), user_package), func_n2o(dup_wrap, 1));
#endif
}