1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-30 06:50:31 +02:00

%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.
This commit is contained in:
Andy Wingo 2010-04-19 13:18:07 +02:00
parent 0157a34157
commit 69cac23837

View file

@ -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,9 +952,9 @@ 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"
}