* read.c (scm_lreadr): Recognize `#:' as a prefix for keywords,
regardless of the setting of the `keywords' read option.
* kw.c (prin_kw): Print keywords using the `#:' syntax, so they
can be re-read no matter what the setting of the `keywords' read
option.
gdb_interface.h, gdbint.c, gdbint.h, gh_data.c, gh_init.c,
gh_io.c, gh_list.c, gh_predicates.c, gh_test_c.c, gh_test_repl.c,
init.c, net_db.c, options.c, options.h, ports.c, print.c, read.c,
script.h, snarf.h, srcprop.c, srcprop.h, stacks.c, stacks.h,
throw.c: Update copyright years; these files have been worked on
significantly in 1997, but only had copyright years for 1996.
Also, change name of copyright holder on some from Mikael
Djurfeldt to Free Software Foundation; he has signed papers
assigning the changes to the FSF.
pointer to the Scheme variable read-hash-procedures and intern it
in scm_init_read. Modify scm_read_hash_extend and
scm_get_hash_procedure to use the pointer.
(SCM_KEYWORD_STYLE): defined.
* read.c (scm_read_opts): add a keywords option. This isn't a
boolean option, in case someone wants to add support for DSSSL
keywords too.
Setup scm_keyword_prefix symbol.
(scm_lreadr): Only process keywords if SCM_KEYWORD_STYLE is
set to 'prefix.
* I've left keyword support disabled by default, since it doesn't
seem to break the module system and it gives R4RS standard behaviour.
It can be reactivated with (read-set! keywords 'prefix).
(idea from Mikael: make it a pair so scm_permanent object only
called once.)
(scm_read_hash_extend): don't call scm_permanent_object.
(ideas from Mikael): if chr is already in the list, replace its
procedure instead of appending it again. If chr is #f, remove
it from the list.
(scm_get_hash_procedure): take CDR of scm_read_hash_procedures.
* gdbint.c (gdb_read): update scm_lreadr usage.
* load.h: update prototypes.
* load.c (scm_primitive_load, scm_read_and_eval_x,
scm_primitive_load_path): remove case_insensitive_p, sharp arguments.
* read.h: add prototype for scm_read_hash_extend. Change args for
other prototypes.
* read.c (scm_read_hash_procedures): new variable.
(scm_read_hash_extend): new procedure.
(scm_get_hash_procedure): new procedure.
* (scm_lreadr): use scm_get_hash_procedure instead of an argument
for extended # processing.
(scm_read, scm_lreadr, scm_lreadrecparen, scm_lreadparen,
scm_read_token): remove case_i, sharp arguments. Change callers.
* read.h (SCM_N_READ_OPTIONS): increase to 3.
(SCM_CASE_INSENSITIVE_P): define.
* read.c: add case-insensitive option to scm_read_opts.
* (scm_read_token): use SCM_CASE_INSENSITIVE_P instead of an argument
to determine whether to convert symbol case.
(default_case_i): definition removed.
* read.c (scm_read_token): if case_i, downcase ic before doing
anything with it.
* read.c (scm_lreadr): use scm_misc_error to improve one of the
"unknown # object" error messages.
* strop.c (scm_i_index, scm_i_rindex): combine into one procedure
(scm_i_index) and declare it static. Add a 'direction' argument
to indicate what way the search should go.
(scm_i_index): throw out-of-range error instead of wrong-type-arg
if indices are bad.
(scm_string_index, scm_string_rindex): adjust usage of scm_i_index.
strop.h: remove scm_i_index, scm_i_rindex prototypes.
figure that out; this usually happens when one variable is only
initialized and used when a particular condition holds true, and
we know that condition will never change within a given invocation
of the function. In this case, we simply initialize the variables
to placate the compiler, hopefully to a value which will cause a
crash if it is ever actually used.
* print.c (scm_iprin1): Initialize mw_pos.
* read.c (scm_lreadrecparen): Initialize tl2, ans2.
* throw.c (scm_ithrow): Initialize dynpair.
* unif.c (scm_uniform_vector_ref): Initialize cra.
* struct.c (init_struct): Initialize prot.
* mbstrings.c (scm_print_mb_symbol): Initialize mw_pos and inc.
eval.h, feature.c, filesys.c, fports.c, gc.c, gsubr.c, init.c,
ioext.c, kw.c, list.c, load.c, mallocs.c, numbers.c, numbers.h,
pairs.c, pairs.h, ports.c, ports.h, posix.c, procprop.c, procs.c,
procs.h, ramap.c, read.c, root.c, srcprop.c, srcprop.h,
strports.c, symbols.c, tags.h, throw.c, unif.c, variable.c,
vports.c: Cleaned up use of pairs: Don't make any special
assumptions about the internal structure of selectors and
mutators: SCM_CXR (<e1>) = <e2> --> SCM_SETCXR (<e1>, <e2>),
SCM_CXR (<e1>) &= <e2> --> SCM_SETAND_CXR (<e1>, <e2>) etc.
(Among other things, this change makes it easier to build Guile
with certain compilers which have problems with casted lvalues.)
expressions; New functions: recsexpr, scm_lreadrecparen;
_scm_make_srcprops --> scm_make_srcprops
(scm_flush_ws): Removed updating of positions counters. This work
is already done by scm_gen_getc