From: Andy Wingo Date: Mon, 19 Apr 2010 11:18:07 +0000 (+0200) Subject: %file-port-name-canonicalization is a fluid X-Git-Url: https://git.hcoop.net/bpt/guile.git/commitdiff_plain/69cac23837eaa3f506658696bd8692764a432e4a %file-port-name-canonicalization is a fluid * libguile/fports.c (fport_canonicalize_filename): (scm_init_fports): Change %file-port-name-canonicalization to be a fluid. --- 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" }