summaryrefslogtreecommitdiff
path: root/libguile/ioext.c
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2016-04-14 15:44:34 +0200
committerAndy Wingo <wingo@pobox.com>2016-04-15 14:07:02 +0200
commit44b3342c4d5ebd4bbf21c7c7608a5f1a53ba0eb4 (patch)
treea396d32e4088e9dab6588621143456356254ba34 /libguile/ioext.c
parent5e470ea48f054aebad0e1000453a6c84e59cf460 (diff)
downloadguile-44b3342c4d5ebd4bbf21c7c7608a5f1a53ba0eb4.tar.gz
Load port bindings in separate (ice-9 ports) module
* module/ice-9/ports.scm: New file. * am/bootstrap.am (SOURCES): Add ice-9/ports.scm. * libguile/fports.c (scm_init_ice_9_fports): New function. (scm_init_fports): Arrange for scm_init_ice_9_fports to be called via load-extension, and load snarfed things there. Move open-file definition early, to allow ports to bootstrap. * libguile/ioext.c (scm_init_ice_9_ioext): New function. (scm_init_ioext): Similarly, register scm_init_ice_9_ioext as an extension. * libguile/ports.c (scm_set_current_input_port) (scm_set_current_output_port, scm_set_current_error_port): Don't define Scheme bindings; do that in Scheme. * libguile/ports.c (scm_i_set_default_port_encoding): (scm_i_default_port_encoding, scm_i_default_port_conversion_handler): (scm_i_set_default_port_conversion_handler): Since we now init encoding early, remove the "init" flags on these encoding/strategy vars. (scm_init_ice_9_ports): New function. (scm_init_ports): Register scm_init_ice_9_ports extension, and define some bindings needed by the bootstrap. * module/Makefile.am (SOURCES): Add ice-9/ports.scm. * module/ice-9/boot-9.scm: Remove code that's not on the boot path, moving it to ice-9/ports.scm. At the end, load (ice-9 ports). * module/ice-9/psyntax.scm (include): Use close-port instead of close-input-port. * module/ice-9/psyntax-pp.scm (include): Regenerate.
Diffstat (limited to 'libguile/ioext.c')
-rw-r--r--libguile/ioext.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/libguile/ioext.c b/libguile/ioext.c
index 607eec636..3f0a53f5d 100644
--- a/libguile/ioext.c
+++ b/libguile/ioext.c
@@ -302,12 +302,21 @@ SCM_DEFINE (scm_fdes_to_ports, "fdes->ports", 1, 0, 0,
#undef FUNC_NAME
+static void
+scm_init_ice_9_ioext (void)
+{
+#include "libguile/ioext.x"
+}
+
void
scm_init_ioext ()
{
scm_add_feature ("i/o-extensions");
-#include "libguile/ioext.x"
+ scm_c_register_extension ("libguile-" SCM_EFFECTIVE_VERSION,
+ "scm_init_ice_9_ioext",
+ (scm_t_extension_init_func) scm_init_ice_9_ioext,
+ NULL);
}