the Scheme variable *struct-printer*. This variable can be set by
Scheme code to override the printing of structures.
(scm_print_struct): If struct_printer is set, call it. If it is
not set, or returns #f, print the structure in the old fashion.
Include "eval.h" for scm_apply.
make-struct-printer, set-struct-printer-in-vtable!): New bindings
to support printing of structures.
(record-type-vtable, make-record-type): Add slot to hold printing
function and initialize it with something appropriate. Removed
commented out printing code.
(record-type-name, record-type-fields): Adjusted slot offsets.
(%print-module): Reduce argument list to "mod" and "port".
scm_struct_i_n_words to get the number of fields, not
-scm_struct_n_extra_words.
On the route to fancier struct printing:
* struct.c (scm_print_struct): New function to print a structure.
Include "genio.h" to support it. This function doesn't do
anything interesting right now, but I think it should be here
anyway.
* struct.h: Include "print.h" and add prototype for
scm_print_struct.
* print.c (scm_iprin1): Call scm_print_struct instead of trying to
print structures ourself.
* _scm.h: if HAVE_RESTARTS is defined then don't use a SYSCALL
loop.
* posix.c (scm_uname): interpret only negative values as an error.
Solaris normally returns a positive value.
* script.c (scm_compile_shell_switches): if we are not going into
an interactive repl, set scm_mask_ints to zero so that asyncs can
run.
* simpos.c (scm_system): don't ignore/unignore signals around
the "system" call.
* posix.c (scm_open_pipe): don't ignore/unignore signals around
the "popen" call.
* init.c (scm_boot_guile_1): don't call scm_init_signals, it's
done in boot-9.scm instead.
* scmsigs.c, async.c: Major rewriting of signal handling code.
(scm_sigaction): new procedure.
(scm_sleep): don't wrap sleep in SCM_SYSCALL, it would mess up the
timing.
(scm_raise): return unspecified, throw error on failure.
* boot-9.scm: signal-handler, alarm-thunk: removed.
don't define ticks-interrupt etc.
top-repl: install signal handlers for SIGINT, SIGFPE, SIGSEGV, SIGBUS
during call to scm-style-repl.
* acconfig.h: mention HAVE_RESTARTS.
* configure.in: check for sigaction and restartable system calls.
basic-load. This is probably wrong, but hopefully the entire
source access system will be revised soon anyway, and this will
make require behave more like Emacs Lisp's require. If this
breaks something, please let me know. Maybe this is real dumb.
* 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.
* regex-posix.c, regex-posix.h: New files. (Some code
is taken liberally from rx/rgx.c in the old Guile dist.)
* init.c: Include regex-posix.h.
(scm_boot_guile_1): Call scm_init_regex_posix.
* Makefile.am (EXTRA_libguile_la_SOURCES, modinclude_HEADERS):
Add regex-posix.[ch] sources.
* Makefile.in: Regenerated.
* scmconfig.h.in: Add HAVE_REGCOMP macro. (automake is supposed
to do this automatically? It didn't for me, bleh.)
sometimes the uninstalled Guile finds the installed shared lib;
Gord says doing this might help. As things turned out, I can't
say whether it does.
* Makefile.in: Regenerated.
write_void_port, flush_void_port, getc_void_port, close_void_port,
noop0): Use ANSI prototypes instead of K&R declarations, so the
initialization of void_port_ptob gets aggressively type-checked.
Fix arguments of print_void_port and write_void_port. (Bill
Janssen)
here; apparently it's not quite right to have const in a prototype
and then use a K&R declaration. I wonder if stuff like this will
go away if we compile with -Wrequire-prototypes, or whatever that
is...
struct stat doesn't have the st_blocks field. We take care of
that case in the code. Replace AC_STRUCT_ST_BLOCKS with its
definition, edited appropriately.
* configure: Regenerated.
* configure.in: Don't link against -lnsl or -lsocket unless we
actually need to. This causes trouble on Irix. (Thanks to Larry
Schwimmer.)