From 15490398d7553605c422d8ab0e59e69e25111df4 Mon Sep 17 00:00:00 2001
From: Peter Stephenson
Date: Sat, 24 Oct 2015 20:48:47 +0100
Subject: 36944: extend fd management to zsocket
---
Src/utils.c | 25 +++++++++++++++----------
1 file changed, 15 insertions(+), 10 deletions(-)
(limited to 'Src/utils.c')
diff --git a/Src/utils.c b/Src/utils.c
index 4c69d75a1..37a02c593 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -1894,24 +1894,29 @@ redup(int x, int y)
/*
* Add an fd opened ithin a module.
*
- * If is_internal is FALSE, the fd can be used within the shell for
- * normal I/O but it will not be closed automatically or by normal shell
- * syntax; it can only be closed by the module (which should included
- * zclose() as part of the sequence).
+ * fdt is the type of the fd; see the FDT_ definitions in zsh.h.
+ * The most likely falures are:
+ *
+ * FDT_EXTERNAL: the fd can be used within the shell for normal I/O but
+ * it will not be closed automatically or by normal shell syntax.
+ *
+ * FDT_MODULE: as FDT_EXTERNAL, but it can only be closed by the module
+ * (which should included zclose() as part of the sequence, not by
+ * the standard shell syntax for closing file descriptors.
+ *
+ * FDT_INTERNAL: fd is treated like others created by the shell for
+ * internall use; it can be closed and will be closed by the shell if it
+ * exec's or performs an exec with a fork optimised out.
*
- * If is_internal is TRUE the fd is treated like others created by the
- * shell for internall use; it can be closed and will be closed by the
- * shell if it exec's or performs an exec with a fork optimised out.
- *.
* Safe if fd is -1 to indicate failure.
*/
/**/
mod_export void
-addmodulefd(int fd, bool is_internal)
+addmodulefd(int fd, int fdt)
{
if (fd >= 0) {
check_fd_table(fd);
- fdtable[fd] = is_internal ? FDT_INTERNAL : FDT_MODULE;
+ fdtable[fd] = fdt;
}
}
--
cgit 1.4.1