summaryrefslogtreecommitdiff
path: root/libguile/ioext.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2016-08-30 23:35:10 +0200
committerAndy Wingo <wingo@pobox.com>2016-08-30 23:35:10 +0200
commit2fa2e50a0fdb49e70d6882e06d1a2dcc2ae10a69 (patch)
tree73aa2e3a049edb5109ec521eccde6d064a2fa7a8 /libguile/ioext.c
parent4256e0655f6b2aae53c3345196288c92423ff277 (diff)
downloadguile-2fa2e50a0fdb49e70d6882e06d1a2dcc2ae10a69.tar.gz
Add file descriptor finalizers
* doc/ref/posix.texi (Ports and File Descriptors): Document new interfaces. * libguile/filesys.c (scm_close, scm_close_fdes) * libguile/fports.c (fport_close): * libguile/ioext.c (scm_primitive_move_to_fdes): Call scm_run_fdes_finalizers. * module/ice-9/fdes-finalizers.scm: * test-suite/tests/fdes-finalizers.test: * libguile/fdes-finalizers.h: * libguile/fdes-finalizers.c: New files. * module/Makefile.am: * test-suite/Makefile.am: * libguile/Makefile.am: * libguile.h: * libguile/init.c: Wire up new files.
Diffstat (limited to 'libguile/ioext.c')
-rw-r--r--libguile/ioext.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/libguile/ioext.c b/libguile/ioext.c
index 58a6219f3..43c915a09 100644
--- a/libguile/ioext.c
+++ b/libguile/ioext.c
@@ -29,6 +29,7 @@
#include "libguile/_scm.h"
#include "libguile/dynwind.h"
+#include "libguile/fdes-finalizers.h"
#include "libguile/feature.h"
#include "libguile/fports.h"
#include "libguile/hashtab.h"
@@ -266,6 +267,7 @@ SCM_DEFINE (scm_primitive_move_to_fdes, "primitive-move->fdes", 2, 0, 0,
if (rv == -1)
SCM_SYSERROR;
stream->fdes = new_fd;
+ scm_run_fdes_finalizers (old_fd);
SCM_SYSCALL (close (old_fd));
return SCM_BOOL_T;
}