by getpw, getgr, gethost, getnet, getproto, getserv (e.g.,
passwd:name, where the first component is the name of the C structure
and the second is the unprefixed C member name.)
* * boot-9.scm (setpwent, setgrent, sethostent, setnetent, setprotoent,
setservent): no longer take an argument, it was bogus.
(scm_freopen): use RO string macros for filename and modes.
(scm_duplicate_port, scm_fdopen): use RO string macros for modes.
* posix.c (scm_getgrgid): simplify conversion of name to C string.
(scm_mknod): use RO string macros for path.
* socket.c (scm_fill_sockaddr, scm_send, scm_sendto):
use SCM_ROSTRINGP, SCM_ROCHARS, SCM_ROLENGTH.
* net_db.c (scm_gethost, scm_getnet, scm_getproto, scm_getserv):
use SCM_ROSTRINGP and SCM_ROCHARS.
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.
* r4rs.scm: update primitive-load usage.
Don't define read-sharp.
* boot-9.scm: use read-hash-extend to install extra read syntax.
(read-sharp): removed.
Adjust usage of primitive-load-path, read, which no longer take
case_i or read-sharp arguments.
* 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.
Configure with --enable-guile-debug if you want a bunch of extra
functions used for debugging when developing Guile.
* acconfig.h: Added new preprocessor symbol GUILE_DEBUG.
with 3 or more args internally to the evaluator. This is mainly
because we don't want to pass entry and exit points of the
debug support twice, but it also seems to increase the speed of
the evaluator for such calls (e. g. (+ 1 2 3)).