summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libguile/fports.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/libguile/fports.c b/libguile/fports.c
index 57af2827a..800e863d0 100644
--- a/libguile/fports.c
+++ b/libguile/fports.c
@@ -266,18 +266,20 @@ SCM_DEFINE (scm_file_port_p, "file-port?", 1, 0, 0,
#undef FUNC_NAME
-static SCM* loc_file_port_name_canonicalization;
+static SCM sys_file_port_name_canonicalization;
SCM_SYMBOL (sym_relative, "relative");
SCM_SYMBOL (sym_absolute, "absolute");
static SCM
fport_canonicalize_filename (SCM filename)
{
+ SCM mode = scm_fluid_ref (sys_file_port_name_canonicalization);
+
if (!scm_is_string (filename))
{
return filename;
}
- else if (scm_is_eq (*loc_file_port_name_canonicalization, sym_relative))
+ else if (scm_is_eq (mode, sym_relative))
{
char *str, *canon;
SCM scanon, load_path;
@@ -304,7 +306,7 @@ fport_canonicalize_filename (SCM filename)
SCM_UNDEFINED);
return filename;
}
- else if (scm_is_eq (*loc_file_port_name_canonicalization, sym_absolute))
+ else if (scm_is_eq (mode, sym_absolute))
{
char *str, *canon;
@@ -950,10 +952,10 @@ scm_init_fports ()
scm_c_define ("_IOLBF", scm_from_int (_IOLBF));
scm_c_define ("_IONBF", scm_from_int (_IONBF));
- loc_file_port_name_canonicalization =
- SCM_VARIABLE_LOC (scm_c_define ("%file-port-name-canonicalization",
- SCM_BOOL_F));
-
+ sys_file_port_name_canonicalization = scm_make_fluid ();
+ scm_c_define ("%file-port-name-canonicalization",
+ sys_file_port_name_canonicalization);
+
#include "libguile/fports.x"
}