* stime.c (tzset): If tzset isn't provided, make it a NOP.
(scm_localtime): Change SCM_EOF to SCM_EOL.
(scm_mktime): Likewise.
* socket.c: Don't include sys/un.h unless autoconf tells
us Unix domain sockets are available.
(scm_fill_sockaddr): Ignore Unix domain code.
(scm_addr_vector): Likewise.
(scm_init_addr_buffer): Likewise.
(scm_socketpair): Don't include unless socketpair was
found during autoconf.
* simpos.c (SYSTNAME): Treat cygwin like Unix.
* scmsigs.c (scm_pause): Don't include unless pause was found
during autoconf.
* posix.c (scm_getgroups): Don't include unless support function
was found during autoconf (in this case, getgroups).
(scm_setpwent): For setpwent.
(scm_setegid): For setegid.
* net_db.c (scm_inet_netof): Don't include unless support
function was found during autoconf (in this case, inet_netof).
(scm_lnaof): For inet_lnaof.
(scm_inet_makeaddr): For inet_makeaddr.
(scm_getnet): For getnetent, getnetbyname, getnetbyaddr.
(scm_getproto): For getprotoent.
(scm_getserv): For getservent.
(scm_sethost): For sethostent, endhostent.
(scm_setnet): For setnetent, endnetent.
(scm_setproto): For setprotoent, endprotoent.
(scm_setserv): For setservent, endservent.
Makefile directory variables. Print a message, but don't print
all the commands.
(versiondat.h): Print a message, but don't print all the commands.
* load.c: #include "alist.h".
(init_build_info): New function.
(scm_init_load): Call it.
* Makefile.in: Regenerated.
After all the Scheme handler function might signal an error too,
and we don't want to lose that.
(cwdr_inner_body): Renamed from cwdr_body.
(cwdr_outer_body): New function, to establish the user's handler,
and pass control to cwdr_inner_body.
(cwdr): Establish the reliable catch-all handler here, and pass
control to cwdr_outer_body.
(struct cwdr_body_data): New field, handler, to allow cwdr to pass
the user's handler through to cwdr_outer_body.
* throw.c (scm_handle_by_message): Move guts into....
(handler_message): New static function.
(scm_handle_by_message_noexit): New function.
* throw.h (scm_handle_by_message_noexit): New prototype.
across this. Only works on GCC. Otherwise, we hope for the best.
(SCM_DEFER_INTS, SCM_ALLOW_INTS): Use FENCE appropriately. I have
the feeling that real thread systems will not need this...
different version of ice-9. People have been skewing things and
sending in bug reports.
* Makefile.am (versiondat.h): New file to generate.
* version.c: #include "versiondat.h", to get version info.
(scm_libguile_config_stamp): New function.
* script.c: #include "version.h".
(scm_compile_switches): Call scm_version to get version number.
* scmconfig.h.in, Makefile.in: Regenerated.
* Makefile.in: Regenerated.
* Makefile.am (ETAGS_ARGS): Catch SCM_PROC, etc. so we can find
primitive definitions under their Scheme names.
* Makefile.am (libguile_la_LDFLAGS): Update library version to
1:2. Helps avoid confusion between installed and uninstalled libs.
* dynl.c (scm_dynamic_func): Cast return value from sysdep_dynl_func.
* extchrs.c (xmbtowc): Make the second arg a normal char, not
unsigned, because that's what the ANSI function takes.
* extchrs.h (xmbtowc): Corresponding change to prototype.
* genio.c (scm_gen_getc): Make buf plain chars. Nobody wants
uchars here.
* mbstrings.c (scm_mb_ilength): Use ANSI arg syntax. Make DATA
argument plain char *.
* strings.c (scm_string): Use SCM_ROCHARS, since c is a plain
char.
* tag.c (scm_tag): Remove unreachable statement.
* unif.c (scm_array_to_list): If we want to shift a 1 bit to the
top of the word, it should be unsigned.
is defined, to avoid warnings; it's only used in the
conflict-checking code. Which might go away anyway.
(SCM_CEVAL): All goto's targeting the `dispatch' label are in
conditionals; put the label definition in an #if too, to stifle
warnings.
function call in SCM_DEFER_INTS/SCM_ALLOW_INTS.
(scm_dynamic_link, scm_dynamic_unlink, scm_dynamic_func): Always
call the sysdep functions with deferred ints.
* dynl.c, dynl-dl.c, dynl-dld.c, dynl-shl.c (sysdep_dynl_link,
sysdep_dynl_unlink, sysdep_dynl_func): Expect to be called with
deferred interrupts and insert SCM_ALLOW_INTS before throwing an
error.
* dynl.c (scm_dynamic_unlink, scm_dynamic_call): Return
SCM_UNSPECIFIED.
condition during lookup (when using threads).
(scm_lookupcar): Implement in terms of scm_lookupcar1.
(SCM_CEVAL): Use scm_lookupcar1 instead of scm_lookupcar in one
place.
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.
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.
* 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.