mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-09 23:40:29 +02:00
* scmsigs.h, async.h: updated.
* _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.
This commit is contained in:
parent
19da35d025
commit
e1a191a8ca
18 changed files with 557 additions and 634 deletions
|
@ -1,3 +1,8 @@
|
||||||
|
Sat May 31 03:48:45 1997 Gary Houston <ghouston@actrix.gen.nz>
|
||||||
|
|
||||||
|
* acconfig.h: mention HAVE_RESTARTS.
|
||||||
|
* configure.in: check for sigaction and restartable system calls.
|
||||||
|
|
||||||
Tue May 27 22:47:52 1997 Tim Pierce <twp@twp.tezcat.com>
|
Tue May 27 22:47:52 1997 Tim Pierce <twp@twp.tezcat.com>
|
||||||
|
|
||||||
* configure.in: Check for presence of regcomp.
|
* configure.in: Check for presence of regcomp.
|
||||||
|
|
8
NEWS
8
NEWS
|
@ -40,6 +40,14 @@ of SCSH's regular expression functions. They are:
|
||||||
|
|
||||||
* Changes to the scm_ interface
|
* Changes to the scm_ interface
|
||||||
|
|
||||||
|
* Changes to system call interfaces:
|
||||||
|
|
||||||
|
** The value returned by `raise' is now unspecified. It throws an exception
|
||||||
|
if an error occurs.
|
||||||
|
|
||||||
|
** A new procedure `sigaction' can be used to install signal handlers
|
||||||
|
(documentation to be provided).
|
||||||
|
|
||||||
|
|
||||||
Changes in Guile 1.1 (Fri May 16 1997):
|
Changes in Guile 1.1 (Fri May 16 1997):
|
||||||
|
|
||||||
|
|
|
@ -72,3 +72,6 @@
|
||||||
|
|
||||||
/* Define if you want support for dynamic linking. */
|
/* Define if you want support for dynamic linking. */
|
||||||
#undef DYNAMIC_LINKING
|
#undef DYNAMIC_LINKING
|
||||||
|
|
||||||
|
/* Define if the operating system can restart system calls. */
|
||||||
|
#undef HAVE_RESTARTS
|
||||||
|
|
235
configure
vendored
235
configure
vendored
|
@ -1945,7 +1945,7 @@ EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
for ac_func in ctermid ftime getcwd geteuid gethostent gettimeofday lstat mkdir mknod nice readlink rename rmdir select setegid seteuid setlocale setpgid setsid strftime strptime symlink sync tcgetpgrp tcsetpgrp times uname waitpid
|
for ac_func in ctermid ftime getcwd geteuid gethostent gettimeofday lstat mkdir mknod nice readlink rename rmdir select setegid seteuid setlocale setpgid setsid sigaction strftime strptime symlink sync tcgetpgrp tcsetpgrp times uname waitpid
|
||||||
do
|
do
|
||||||
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
|
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
|
||||||
echo "configure:1952: checking for $ac_func" >&5
|
echo "configure:1952: checking for $ac_func" >&5
|
||||||
|
@ -2001,15 +2001,53 @@ fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
||||||
|
echo $ac_n "checking for restartable system calls""... $ac_c" 1>&6
|
||||||
|
echo "configure:2006: checking for restartable system calls" >&5
|
||||||
|
if eval "test \"`echo '$''{'scm_cv_restarts'+set}'`\" = set"; then
|
||||||
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
|
else
|
||||||
|
if test $ac_cv_func_sigaction = yes; then
|
||||||
|
cat > conftest.$ac_ext <<EOF
|
||||||
|
#line 2012 "configure"
|
||||||
|
#include "confdefs.h"
|
||||||
|
#include <signal.h>
|
||||||
|
int main() {
|
||||||
|
int a = SA_RESTART
|
||||||
|
; return 0; }
|
||||||
|
EOF
|
||||||
|
if { (eval echo configure:2019: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
|
rm -rf conftest*
|
||||||
|
scm_cv_restarts=yes
|
||||||
|
else
|
||||||
|
echo "configure: failed program was:" >&5
|
||||||
|
cat conftest.$ac_ext >&5
|
||||||
|
rm -rf conftest*
|
||||||
|
scm_cv_restarts=no
|
||||||
|
fi
|
||||||
|
rm -f conftest*
|
||||||
|
else
|
||||||
|
scm_cv_restarts=no
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$ac_t""$scm_cv_restarts" 1>&6
|
||||||
|
if test $scm_cv_restarts = yes; then
|
||||||
|
cat >> confdefs.h <<\EOF
|
||||||
|
#define HAVE_RESTARTS 1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
for ac_func in regcomp
|
for ac_func in regcomp
|
||||||
do
|
do
|
||||||
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
|
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
|
||||||
echo "configure:2008: checking for $ac_func" >&5
|
echo "configure:2046: checking for $ac_func" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2013 "configure"
|
#line 2051 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
/* System header to define __stub macros and hopefully few prototypes,
|
/* System header to define __stub macros and hopefully few prototypes,
|
||||||
which can conflict with char $ac_func(); below. */
|
which can conflict with char $ac_func(); below. */
|
||||||
|
@ -2032,7 +2070,7 @@ $ac_func();
|
||||||
|
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2036: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:2074: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
eval "ac_cv_func_$ac_func=yes"
|
eval "ac_cv_func_$ac_func=yes"
|
||||||
else
|
else
|
||||||
|
@ -2060,12 +2098,12 @@ done
|
||||||
for ac_func in inet_aton putenv strerror
|
for ac_func in inet_aton putenv strerror
|
||||||
do
|
do
|
||||||
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
|
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
|
||||||
echo "configure:2064: checking for $ac_func" >&5
|
echo "configure:2102: checking for $ac_func" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2069 "configure"
|
#line 2107 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
/* System header to define __stub macros and hopefully few prototypes,
|
/* System header to define __stub macros and hopefully few prototypes,
|
||||||
which can conflict with char $ac_func(); below. */
|
which can conflict with char $ac_func(); below. */
|
||||||
|
@ -2088,7 +2126,7 @@ $ac_func();
|
||||||
|
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2092: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:2130: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
eval "ac_cv_func_$ac_func=yes"
|
eval "ac_cv_func_$ac_func=yes"
|
||||||
else
|
else
|
||||||
|
@ -2118,19 +2156,19 @@ done
|
||||||
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
|
# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
|
||||||
# for constant arguments. Useless!
|
# for constant arguments. Useless!
|
||||||
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
|
echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6
|
||||||
echo "configure:2122: checking for working alloca.h" >&5
|
echo "configure:2160: checking for working alloca.h" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_header_alloca_h'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2127 "configure"
|
#line 2165 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <alloca.h>
|
#include <alloca.h>
|
||||||
int main() {
|
int main() {
|
||||||
char *p = alloca(2 * sizeof(int));
|
char *p = alloca(2 * sizeof(int));
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:2172: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
ac_cv_header_alloca_h=yes
|
ac_cv_header_alloca_h=yes
|
||||||
else
|
else
|
||||||
|
@ -2151,12 +2189,12 @@ EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo $ac_n "checking for alloca""... $ac_c" 1>&6
|
echo $ac_n "checking for alloca""... $ac_c" 1>&6
|
||||||
echo "configure:2155: checking for alloca" >&5
|
echo "configure:2193: checking for alloca" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_func_alloca_works'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2160 "configure"
|
#line 2198 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
|
@ -2179,7 +2217,7 @@ int main() {
|
||||||
char *p = (char *) alloca(1);
|
char *p = (char *) alloca(1);
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:2221: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
ac_cv_func_alloca_works=yes
|
ac_cv_func_alloca_works=yes
|
||||||
else
|
else
|
||||||
|
@ -2211,12 +2249,12 @@ EOF
|
||||||
|
|
||||||
|
|
||||||
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
|
echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
|
||||||
echo "configure:2215: checking whether alloca needs Cray hooks" >&5
|
echo "configure:2253: checking whether alloca needs Cray hooks" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_os_cray'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2220 "configure"
|
#line 2258 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#if defined(CRAY) && ! defined(CRAY2)
|
#if defined(CRAY) && ! defined(CRAY2)
|
||||||
webecray
|
webecray
|
||||||
|
@ -2241,12 +2279,12 @@ echo "$ac_t""$ac_cv_os_cray" 1>&6
|
||||||
if test $ac_cv_os_cray = yes; then
|
if test $ac_cv_os_cray = yes; then
|
||||||
for ac_func in _getb67 GETB67 getb67; do
|
for ac_func in _getb67 GETB67 getb67; do
|
||||||
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
|
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
|
||||||
echo "configure:2245: checking for $ac_func" >&5
|
echo "configure:2283: checking for $ac_func" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2250 "configure"
|
#line 2288 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
/* System header to define __stub macros and hopefully few prototypes,
|
/* System header to define __stub macros and hopefully few prototypes,
|
||||||
which can conflict with char $ac_func(); below. */
|
which can conflict with char $ac_func(); below. */
|
||||||
|
@ -2269,7 +2307,7 @@ $ac_func();
|
||||||
|
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:2311: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
eval "ac_cv_func_$ac_func=yes"
|
eval "ac_cv_func_$ac_func=yes"
|
||||||
else
|
else
|
||||||
|
@ -2296,7 +2334,7 @@ done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
|
echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
|
||||||
echo "configure:2300: checking stack direction for C alloca" >&5
|
echo "configure:2338: checking stack direction for C alloca" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_c_stack_direction'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
|
@ -2304,7 +2342,7 @@ else
|
||||||
ac_cv_c_stack_direction=0
|
ac_cv_c_stack_direction=0
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2308 "configure"
|
#line 2346 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
find_stack_direction ()
|
find_stack_direction ()
|
||||||
{
|
{
|
||||||
|
@ -2323,7 +2361,7 @@ main ()
|
||||||
exit (find_stack_direction() < 0);
|
exit (find_stack_direction() < 0);
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
|
if { (eval echo configure:2365: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
|
||||||
then
|
then
|
||||||
ac_cv_c_stack_direction=1
|
ac_cv_c_stack_direction=1
|
||||||
else
|
else
|
||||||
|
@ -2346,12 +2384,12 @@ fi
|
||||||
|
|
||||||
|
|
||||||
echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6
|
echo $ac_n "checking for st_rdev in struct stat""... $ac_c" 1>&6
|
||||||
echo "configure:2350: checking for st_rdev in struct stat" >&5
|
echo "configure:2388: checking for st_rdev in struct stat" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_struct_st_rdev'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2355 "configure"
|
#line 2393 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
@ -2359,7 +2397,7 @@ int main() {
|
||||||
struct stat s; s.st_rdev;
|
struct stat s; s.st_rdev;
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2363: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
if { (eval echo configure:2401: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
ac_cv_struct_st_rdev=yes
|
ac_cv_struct_st_rdev=yes
|
||||||
else
|
else
|
||||||
|
@ -2380,12 +2418,12 @@ EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6
|
echo $ac_n "checking for st_blksize in struct stat""... $ac_c" 1>&6
|
||||||
echo "configure:2384: checking for st_blksize in struct stat" >&5
|
echo "configure:2422: checking for st_blksize in struct stat" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_struct_st_blksize'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2389 "configure"
|
#line 2427 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
@ -2393,7 +2431,7 @@ int main() {
|
||||||
struct stat s; s.st_blksize;
|
struct stat s; s.st_blksize;
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2397: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
if { (eval echo configure:2435: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
ac_cv_struct_st_blksize=yes
|
ac_cv_struct_st_blksize=yes
|
||||||
else
|
else
|
||||||
|
@ -2417,12 +2455,12 @@ fi
|
||||||
# We could use AC_STRUCT_ST_BLOCKS here, but that adds fileblocks.o to
|
# We could use AC_STRUCT_ST_BLOCKS here, but that adds fileblocks.o to
|
||||||
# LIBOBJS, which we don't need. This seems more direct.
|
# LIBOBJS, which we don't need. This seems more direct.
|
||||||
echo $ac_n "checking for st_blocks in struct stat""... $ac_c" 1>&6
|
echo $ac_n "checking for st_blocks in struct stat""... $ac_c" 1>&6
|
||||||
echo "configure:2421: checking for st_blocks in struct stat" >&5
|
echo "configure:2459: checking for st_blocks in struct stat" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_struct_st_blocks'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_struct_st_blocks'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2426 "configure"
|
#line 2464 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
@ -2430,7 +2468,7 @@ int main() {
|
||||||
struct stat s; s.st_blocks;
|
struct stat s; s.st_blocks;
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2434: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
if { (eval echo configure:2472: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
ac_cv_struct_st_blocks=yes
|
ac_cv_struct_st_blocks=yes
|
||||||
else
|
else
|
||||||
|
@ -2451,12 +2489,12 @@ EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
|
echo $ac_n "checking whether struct tm is in sys/time.h or time.h""... $ac_c" 1>&6
|
||||||
echo "configure:2455: checking whether struct tm is in sys/time.h or time.h" >&5
|
echo "configure:2493: checking whether struct tm is in sys/time.h or time.h" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_struct_tm'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2460 "configure"
|
#line 2498 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
@ -2464,7 +2502,7 @@ int main() {
|
||||||
struct tm *tp; tp->tm_sec;
|
struct tm *tp; tp->tm_sec;
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2468: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
if { (eval echo configure:2506: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
ac_cv_struct_tm=time.h
|
ac_cv_struct_tm=time.h
|
||||||
else
|
else
|
||||||
|
@ -2485,12 +2523,12 @@ EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
|
echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
|
||||||
echo "configure:2489: checking for tm_zone in struct tm" >&5
|
echo "configure:2527: checking for tm_zone in struct tm" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_struct_tm_zone'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2494 "configure"
|
#line 2532 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <$ac_cv_struct_tm>
|
#include <$ac_cv_struct_tm>
|
||||||
|
@ -2498,7 +2536,7 @@ int main() {
|
||||||
struct tm tm; tm.tm_zone;
|
struct tm tm; tm.tm_zone;
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2502: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
if { (eval echo configure:2540: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
ac_cv_struct_tm_zone=yes
|
ac_cv_struct_tm_zone=yes
|
||||||
else
|
else
|
||||||
|
@ -2518,12 +2556,12 @@ EOF
|
||||||
|
|
||||||
else
|
else
|
||||||
echo $ac_n "checking for tzname""... $ac_c" 1>&6
|
echo $ac_n "checking for tzname""... $ac_c" 1>&6
|
||||||
echo "configure:2522: checking for tzname" >&5
|
echo "configure:2560: checking for tzname" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_var_tzname'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2527 "configure"
|
#line 2565 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#ifndef tzname /* For SGI. */
|
#ifndef tzname /* For SGI. */
|
||||||
|
@ -2533,7 +2571,7 @@ int main() {
|
||||||
atoi(*tzname);
|
atoi(*tzname);
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2537: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:2575: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
ac_cv_var_tzname=yes
|
ac_cv_var_tzname=yes
|
||||||
else
|
else
|
||||||
|
@ -2556,12 +2594,12 @@ fi
|
||||||
|
|
||||||
|
|
||||||
echo $ac_n "checking whether we need POSIX to get struct utimbuf""... $ac_c" 1>&6
|
echo $ac_n "checking whether we need POSIX to get struct utimbuf""... $ac_c" 1>&6
|
||||||
echo "configure:2560: checking whether we need POSIX to get struct utimbuf" >&5
|
echo "configure:2598: checking whether we need POSIX to get struct utimbuf" >&5
|
||||||
if eval "test \"`echo '$''{'guile_cv_struct_utimbuf_needs_posix'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'guile_cv_struct_utimbuf_needs_posix'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2565 "configure"
|
#line 2603 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
#ifdef __EMX__
|
#ifdef __EMX__
|
||||||
|
@ -2573,7 +2611,7 @@ struct utime blah;
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
|
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
|
||||||
{ (eval echo configure:2577: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
{ (eval echo configure:2615: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
|
||||||
ac_err=`grep -v '^ *+' conftest.out`
|
ac_err=`grep -v '^ *+' conftest.out`
|
||||||
if test -z "$ac_err"; then
|
if test -z "$ac_err"; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
|
@ -2602,7 +2640,7 @@ xtra_PLUGIN_guile_libs=""
|
||||||
|
|
||||||
|
|
||||||
echo $ac_n "checking for main in -lm""... $ac_c" 1>&6
|
echo $ac_n "checking for main in -lm""... $ac_c" 1>&6
|
||||||
echo "configure:2606: checking for main in -lm" >&5
|
echo "configure:2644: checking for main in -lm" >&5
|
||||||
ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'`
|
ac_lib_var=`echo m'_'main | sed 'y%./+-%__p_%'`
|
||||||
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
|
@ -2610,14 +2648,14 @@ else
|
||||||
ac_save_LIBS="$LIBS"
|
ac_save_LIBS="$LIBS"
|
||||||
LIBS="-lm $LIBS"
|
LIBS="-lm $LIBS"
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2614 "configure"
|
#line 2652 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
int main() {
|
int main() {
|
||||||
main()
|
main()
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2621: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:2659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||||
else
|
else
|
||||||
|
@ -2645,12 +2683,12 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
|
echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
|
||||||
echo "configure:2649: checking for gethostbyname" >&5
|
echo "configure:2687: checking for gethostbyname" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2654 "configure"
|
#line 2692 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
/* System header to define __stub macros and hopefully few prototypes,
|
/* System header to define __stub macros and hopefully few prototypes,
|
||||||
which can conflict with char gethostbyname(); below. */
|
which can conflict with char gethostbyname(); below. */
|
||||||
|
@ -2673,7 +2711,7 @@ gethostbyname();
|
||||||
|
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:2715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
eval "ac_cv_func_gethostbyname=yes"
|
eval "ac_cv_func_gethostbyname=yes"
|
||||||
else
|
else
|
||||||
|
@ -2694,7 +2732,7 @@ fi
|
||||||
|
|
||||||
if test $ac_cv_func_gethostbyname = no; then
|
if test $ac_cv_func_gethostbyname = no; then
|
||||||
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
|
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
|
||||||
echo "configure:2698: checking for gethostbyname in -lnsl" >&5
|
echo "configure:2736: checking for gethostbyname in -lnsl" >&5
|
||||||
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
|
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
|
||||||
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
|
@ -2702,7 +2740,7 @@ else
|
||||||
ac_save_LIBS="$LIBS"
|
ac_save_LIBS="$LIBS"
|
||||||
LIBS="-lnsl $LIBS"
|
LIBS="-lnsl $LIBS"
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2706 "configure"
|
#line 2744 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
/* Override any gcc2 internal prototype to avoid an error. */
|
/* Override any gcc2 internal prototype to avoid an error. */
|
||||||
/* We use char because int might match the return type of a gcc2
|
/* We use char because int might match the return type of a gcc2
|
||||||
|
@ -2713,7 +2751,7 @@ int main() {
|
||||||
gethostbyname()
|
gethostbyname()
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2717: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:2755: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||||
else
|
else
|
||||||
|
@ -2742,12 +2780,12 @@ fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
echo $ac_n "checking for connect""... $ac_c" 1>&6
|
echo $ac_n "checking for connect""... $ac_c" 1>&6
|
||||||
echo "configure:2746: checking for connect" >&5
|
echo "configure:2784: checking for connect" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2751 "configure"
|
#line 2789 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
/* System header to define __stub macros and hopefully few prototypes,
|
/* System header to define __stub macros and hopefully few prototypes,
|
||||||
which can conflict with char connect(); below. */
|
which can conflict with char connect(); below. */
|
||||||
|
@ -2770,7 +2808,7 @@ connect();
|
||||||
|
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2774: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:2812: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
eval "ac_cv_func_connect=yes"
|
eval "ac_cv_func_connect=yes"
|
||||||
else
|
else
|
||||||
|
@ -2791,7 +2829,7 @@ fi
|
||||||
|
|
||||||
if test $ac_cv_func_connect = no; then
|
if test $ac_cv_func_connect = no; then
|
||||||
echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
|
echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
|
||||||
echo "configure:2795: checking for connect in -lsocket" >&5
|
echo "configure:2833: checking for connect in -lsocket" >&5
|
||||||
ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
|
ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
|
||||||
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
|
@ -2799,7 +2837,7 @@ else
|
||||||
ac_save_LIBS="$LIBS"
|
ac_save_LIBS="$LIBS"
|
||||||
LIBS="-lsocket $LIBS"
|
LIBS="-lsocket $LIBS"
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2803 "configure"
|
#line 2841 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
/* Override any gcc2 internal prototype to avoid an error. */
|
/* Override any gcc2 internal prototype to avoid an error. */
|
||||||
/* We use char because int might match the return type of a gcc2
|
/* We use char because int might match the return type of a gcc2
|
||||||
|
@ -2810,7 +2848,7 @@ int main() {
|
||||||
connect()
|
connect()
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2814: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:2852: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||||
else
|
else
|
||||||
|
@ -2842,7 +2880,7 @@ fi
|
||||||
if test "$enable_dynamic_linking" = "yes"; then
|
if test "$enable_dynamic_linking" = "yes"; then
|
||||||
|
|
||||||
echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
|
echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
|
||||||
echo "configure:2846: checking for dlopen in -ldl" >&5
|
echo "configure:2884: checking for dlopen in -ldl" >&5
|
||||||
ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
|
ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
|
||||||
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
|
@ -2850,7 +2888,7 @@ else
|
||||||
ac_save_LIBS="$LIBS"
|
ac_save_LIBS="$LIBS"
|
||||||
LIBS="-ldl $LIBS"
|
LIBS="-ldl $LIBS"
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2854 "configure"
|
#line 2892 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
/* Override any gcc2 internal prototype to avoid an error. */
|
/* Override any gcc2 internal prototype to avoid an error. */
|
||||||
/* We use char because int might match the return type of a gcc2
|
/* We use char because int might match the return type of a gcc2
|
||||||
|
@ -2861,7 +2899,7 @@ int main() {
|
||||||
dlopen()
|
dlopen()
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2865: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:2903: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||||
else
|
else
|
||||||
|
@ -2896,7 +2934,7 @@ EOF
|
||||||
|
|
||||||
else
|
else
|
||||||
echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
|
echo $ac_n "checking for dld_link in -ldld""... $ac_c" 1>&6
|
||||||
echo "configure:2900: checking for dld_link in -ldld" >&5
|
echo "configure:2938: checking for dld_link in -ldld" >&5
|
||||||
ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'`
|
ac_lib_var=`echo dld'_'dld_link | sed 'y%./+-%__p_%'`
|
||||||
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
|
@ -2904,7 +2942,7 @@ else
|
||||||
ac_save_LIBS="$LIBS"
|
ac_save_LIBS="$LIBS"
|
||||||
LIBS="-ldld $LIBS"
|
LIBS="-ldld $LIBS"
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2908 "configure"
|
#line 2946 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
/* Override any gcc2 internal prototype to avoid an error. */
|
/* Override any gcc2 internal prototype to avoid an error. */
|
||||||
/* We use char because int might match the return type of a gcc2
|
/* We use char because int might match the return type of a gcc2
|
||||||
|
@ -2915,7 +2953,7 @@ int main() {
|
||||||
dld_link()
|
dld_link()
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2919: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:2957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
eval "ac_cv_lib_$ac_lib_var=yes"
|
eval "ac_cv_lib_$ac_lib_var=yes"
|
||||||
else
|
else
|
||||||
|
@ -2952,12 +2990,12 @@ else
|
||||||
for ac_func in shl_load
|
for ac_func in shl_load
|
||||||
do
|
do
|
||||||
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
|
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
|
||||||
echo "configure:2956: checking for $ac_func" >&5
|
echo "configure:2994: checking for $ac_func" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 2961 "configure"
|
#line 2999 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
/* System header to define __stub macros and hopefully few prototypes,
|
/* System header to define __stub macros and hopefully few prototypes,
|
||||||
which can conflict with char $ac_func(); below. */
|
which can conflict with char $ac_func(); below. */
|
||||||
|
@ -2980,7 +3018,7 @@ $ac_func();
|
||||||
|
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:2984: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:3022: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
eval "ac_cv_func_$ac_func=yes"
|
eval "ac_cv_func_$ac_func=yes"
|
||||||
else
|
else
|
||||||
|
@ -3025,13 +3063,13 @@ if test "$cross_compiling" = yes; then
|
||||||
echo "configure: warning: Guessing that stack grows down -- see scmconfig.h.in" 1>&2
|
echo "configure: warning: Guessing that stack grows down -- see scmconfig.h.in" 1>&2
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 3029 "configure"
|
#line 3067 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
aux (l) unsigned long l;
|
aux (l) unsigned long l;
|
||||||
{ int x; exit (l >= ((unsigned long)&x)); }
|
{ int x; exit (l >= ((unsigned long)&x)); }
|
||||||
main () { int q; aux((unsigned long)&q); }
|
main () { int q; aux((unsigned long)&q); }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:3035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
|
if { (eval echo configure:3073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
|
||||||
then
|
then
|
||||||
cat >> confdefs.h <<\EOF
|
cat >> confdefs.h <<\EOF
|
||||||
#define SCM_STACK_GROWS_UP 1
|
#define SCM_STACK_GROWS_UP 1
|
||||||
|
@ -3054,11 +3092,11 @@ EOF
|
||||||
echo "configure: warning: Guessing that sizeof(long) == sizeof(float) -- see scmconfig.h.in" 1>&2
|
echo "configure: warning: Guessing that sizeof(long) == sizeof(float) -- see scmconfig.h.in" 1>&2
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 3058 "configure"
|
#line 3096 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
main () { exit (sizeof(float) != sizeof(long)); }
|
main () { exit (sizeof(float) != sizeof(long)); }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:3062: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
|
if { (eval echo configure:3100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
|
||||||
then
|
then
|
||||||
cat >> confdefs.h <<\EOF
|
cat >> confdefs.h <<\EOF
|
||||||
#define SCM_SINGLES 1
|
#define SCM_SINGLES 1
|
||||||
|
@ -3073,12 +3111,12 @@ fi
|
||||||
|
|
||||||
|
|
||||||
echo $ac_n "checking for struct linger""... $ac_c" 1>&6
|
echo $ac_n "checking for struct linger""... $ac_c" 1>&6
|
||||||
echo "configure:3077: checking for struct linger" >&5
|
echo "configure:3115: checking for struct linger" >&5
|
||||||
if eval "test \"`echo '$''{'scm_cv_struct_linger'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'scm_cv_struct_linger'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 3082 "configure"
|
#line 3120 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
|
@ -3087,7 +3125,7 @@ int main() {
|
||||||
struct linger lgr; lgr.l_linger = 100
|
struct linger lgr; lgr.l_linger = 100
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:3091: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
if { (eval echo configure:3129: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
scm_cv_struct_linger="yes"
|
scm_cv_struct_linger="yes"
|
||||||
else
|
else
|
||||||
|
@ -3114,19 +3152,19 @@ fi
|
||||||
#--------------------------------------------------------------------
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
echo $ac_n "checking how to set a stream file descriptor""... $ac_c" 1>&6
|
echo $ac_n "checking how to set a stream file descriptor""... $ac_c" 1>&6
|
||||||
echo "configure:3118: checking how to set a stream file descriptor" >&5
|
echo "configure:3156: checking how to set a stream file descriptor" >&5
|
||||||
if eval "test \"`echo '$''{'scm_cv_fd_setter'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'scm_cv_fd_setter'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 3123 "configure"
|
#line 3161 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
int main() {
|
int main() {
|
||||||
stdout->_file = 1
|
stdout->_file = 1
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:3130: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
if { (eval echo configure:3168: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
scm_cv_fd_setter="_file"
|
scm_cv_fd_setter="_file"
|
||||||
else
|
else
|
||||||
|
@ -3134,14 +3172,14 @@ else
|
||||||
cat conftest.$ac_ext >&5
|
cat conftest.$ac_ext >&5
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 3138 "configure"
|
#line 3176 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
int main() {
|
int main() {
|
||||||
stdout->_fileno = 1
|
stdout->_fileno = 1
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:3145: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
if { (eval echo configure:3183: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
scm_cv_fd_setter="_fileno"
|
scm_cv_fd_setter="_fileno"
|
||||||
else
|
else
|
||||||
|
@ -3179,19 +3217,19 @@ fi
|
||||||
#--------------------------------------------------------------------
|
#--------------------------------------------------------------------
|
||||||
|
|
||||||
echo $ac_n "checking how to get buffer char count from FILE structure""... $ac_c" 1>&6
|
echo $ac_n "checking how to get buffer char count from FILE structure""... $ac_c" 1>&6
|
||||||
echo "configure:3183: checking how to get buffer char count from FILE structure" >&5
|
echo "configure:3221: checking how to get buffer char count from FILE structure" >&5
|
||||||
if eval "test \"`echo '$''{'scm_cv_struct_file_count'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'scm_cv_struct_file_count'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 3188 "configure"
|
#line 3226 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
int main() {
|
int main() {
|
||||||
FILE *f = stdin; f->_cnt = 0
|
FILE *f = stdin; f->_cnt = 0
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:3195: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
if { (eval echo configure:3233: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
scm_cv_struct_file_count="_cnt"
|
scm_cv_struct_file_count="_cnt"
|
||||||
else
|
else
|
||||||
|
@ -3199,14 +3237,14 @@ else
|
||||||
cat conftest.$ac_ext >&5
|
cat conftest.$ac_ext >&5
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 3203 "configure"
|
#line 3241 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
int main() {
|
int main() {
|
||||||
FILE *f = stdin; f->_r = 0
|
FILE *f = stdin; f->_r = 0
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:3210: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
if { (eval echo configure:3248: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
scm_cv_struct_file_count="_r"
|
scm_cv_struct_file_count="_r"
|
||||||
else
|
else
|
||||||
|
@ -3214,14 +3252,14 @@ else
|
||||||
cat conftest.$ac_ext >&5
|
cat conftest.$ac_ext >&5
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 3218 "configure"
|
#line 3256 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
int main() {
|
int main() {
|
||||||
FILE *f = stdin; f->readCount = 0
|
FILE *f = stdin; f->readCount = 0
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:3225: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
if { (eval echo configure:3263: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
scm_cv_struct_file_count="readCount"
|
scm_cv_struct_file_count="readCount"
|
||||||
else
|
else
|
||||||
|
@ -3248,14 +3286,14 @@ if eval "test \"`echo '$''{'scm_cv_struct_file_gptr'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 3252 "configure"
|
#line 3290 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
int main() {
|
int main() {
|
||||||
FILE *f = stdin; f->_gptr = f->egptr;
|
FILE *f = stdin; f->_gptr = f->egptr;
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:3259: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
if { (eval echo configure:3297: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
scm_cv_struct_file_gptr=1
|
scm_cv_struct_file_gptr=1
|
||||||
else
|
else
|
||||||
|
@ -3278,14 +3316,14 @@ if eval "test \"`echo '$''{'scm_cv_struct_file_readptr'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 3282 "configure"
|
#line 3320 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
int main() {
|
int main() {
|
||||||
FILE *f = stdin; f->_IO_read_ptr = f->_IO_read_end;
|
FILE *f = stdin; f->_IO_read_ptr = f->_IO_read_end;
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:3289: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
if { (eval echo configure:3327: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
scm_cv_struct_file_readptr=1
|
scm_cv_struct_file_readptr=1
|
||||||
else
|
else
|
||||||
|
@ -3315,7 +3353,7 @@ fi
|
||||||
|
|
||||||
|
|
||||||
echo $ac_n "checking "threads package type"""... $ac_c" 1>&6
|
echo $ac_n "checking "threads package type"""... $ac_c" 1>&6
|
||||||
echo "configure:3319: checking "threads package type"" >&5
|
echo "configure:3357: checking "threads package type"" >&5
|
||||||
if eval "test \"`echo '$''{'cy_cv_threads_package'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'cy_cv_threads_package'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
|
@ -3374,7 +3412,7 @@ if test "$use_threads" != no; then
|
||||||
LDFLAGS="-L$use_threads/lib"
|
LDFLAGS="-L$use_threads/lib"
|
||||||
LIBS="-lgthreads -lmalloc"
|
LIBS="-lgthreads -lmalloc"
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 3378 "configure"
|
#line 3416 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
int main() {
|
int main() {
|
||||||
|
@ -3383,7 +3421,7 @@ pthread_equal(NULL,NULL);
|
||||||
|
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:3387: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:3425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
threads_package=FSU
|
threads_package=FSU
|
||||||
else
|
else
|
||||||
|
@ -3395,7 +3433,7 @@ rm -f conftest*
|
||||||
if test "$threads_package" = unknown; then
|
if test "$threads_package" = unknown; then
|
||||||
LIBS="-lpthread"
|
LIBS="-lpthread"
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 3399 "configure"
|
#line 3437 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
int main() {
|
int main() {
|
||||||
|
@ -3404,7 +3442,7 @@ pthread_equal(NULL,NULL);
|
||||||
|
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:3408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:3446: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
threads_package=MIT
|
threads_package=MIT
|
||||||
else
|
else
|
||||||
|
@ -3416,7 +3454,7 @@ rm -f conftest*
|
||||||
if test "$threads_package" = unknown; then
|
if test "$threads_package" = unknown; then
|
||||||
LIBS="-lpthreads"
|
LIBS="-lpthreads"
|
||||||
cat > conftest.$ac_ext <<EOF
|
cat > conftest.$ac_ext <<EOF
|
||||||
#line 3420 "configure"
|
#line 3458 "configure"
|
||||||
#include "confdefs.h"
|
#include "confdefs.h"
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
int main() {
|
int main() {
|
||||||
|
@ -3425,7 +3463,7 @@ pthread_equal(NULL,NULL);
|
||||||
|
|
||||||
; return 0; }
|
; return 0; }
|
||||||
EOF
|
EOF
|
||||||
if { (eval echo configure:3429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
if { (eval echo configure:3467: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
|
||||||
rm -rf conftest*
|
rm -rf conftest*
|
||||||
threads_package=PCthreads
|
threads_package=PCthreads
|
||||||
else
|
else
|
||||||
|
@ -3505,7 +3543,7 @@ do
|
||||||
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
# Extract the first word of "$ac_prog", so it can be a program name with args.
|
||||||
set dummy $ac_prog; ac_word=$2
|
set dummy $ac_prog; ac_word=$2
|
||||||
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
|
||||||
echo "configure:3509: checking for $ac_word" >&5
|
echo "configure:3547: checking for $ac_word" >&5
|
||||||
if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
|
if eval "test \"`echo '$''{'ac_cv_prog_AWK'+set}'`\" = set"; then
|
||||||
echo $ac_n "(cached) $ac_c" 1>&6
|
echo $ac_n "(cached) $ac_c" 1>&6
|
||||||
else
|
else
|
||||||
|
@ -3570,7 +3608,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo $ac_n "checking host system type""... $ac_c" 1>&6
|
echo $ac_n "checking host system type""... $ac_c" 1>&6
|
||||||
echo "configure:3574: checking host system type" >&5
|
echo "configure:3612: checking host system type" >&5
|
||||||
|
|
||||||
host_alias=$host
|
host_alias=$host
|
||||||
case "$host_alias" in
|
case "$host_alias" in
|
||||||
|
@ -4029,7 +4067,6 @@ fi; done
|
||||||
EOF
|
EOF
|
||||||
cat >> $CONFIG_STATUS <<EOF
|
cat >> $CONFIG_STATUS <<EOF
|
||||||
|
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
cat >> $CONFIG_STATUS <<\EOF
|
cat >> $CONFIG_STATUS <<\EOF
|
||||||
test -z "$CONFIG_HEADERS" || echo timestamp > libguile/stamp-h
|
test -z "$CONFIG_HEADERS" || echo timestamp > libguile/stamp-h
|
||||||
|
|
16
configure.in
16
configure.in
|
@ -51,7 +51,21 @@ AC_TYPE_GETGROUPS
|
||||||
AC_TYPE_SIGNAL
|
AC_TYPE_SIGNAL
|
||||||
AC_TYPE_MODE_T
|
AC_TYPE_MODE_T
|
||||||
|
|
||||||
AC_CHECK_FUNCS(ctermid ftime getcwd geteuid gethostent gettimeofday lstat mkdir mknod nice readlink rename rmdir select setegid seteuid setlocale setpgid setsid strftime strptime symlink sync tcgetpgrp tcsetpgrp times uname waitpid)
|
AC_CHECK_FUNCS(ctermid ftime getcwd geteuid gethostent gettimeofday lstat mkdir mknod nice readlink rename rmdir select setegid seteuid setlocale setpgid setsid sigaction strftime strptime symlink sync tcgetpgrp tcsetpgrp times uname waitpid)
|
||||||
|
|
||||||
|
AC_CACHE_CHECK([for restartable system calls], scm_cv_restarts,
|
||||||
|
if test $ac_cv_func_sigaction = yes; then
|
||||||
|
[AC_TRY_COMPILE([#include <signal.h>],
|
||||||
|
[int a = SA_RESTART],
|
||||||
|
scm_cv_restarts=yes,
|
||||||
|
scm_cv_restarts=no)]
|
||||||
|
else
|
||||||
|
scm_cv_restarts=no
|
||||||
|
fi)
|
||||||
|
if test $scm_cv_restarts = yes; then
|
||||||
|
AC_DEFINE(HAVE_RESTARTS)
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
AC_CHECK_FUNCS(regcomp, [LIBOBJS="regex-posix.o $LIBOBJS"])
|
AC_CHECK_FUNCS(regcomp, [LIBOBJS="regex-posix.o $LIBOBJS"])
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,10 @@
|
||||||
|
Sat May 31 18:57:12 1997 Gary Houston <ghouston@actrix.gen.nz>
|
||||||
|
|
||||||
|
* 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.
|
||||||
|
|
||||||
Fri May 30 18:08:10 1997 Jim Blandy <jimb@floss.cyclic.com>
|
Fri May 30 18:08:10 1997 Jim Blandy <jimb@floss.cyclic.com>
|
||||||
|
|
||||||
* slib.scm (slib:load): Use primitive-load-path instead of
|
* slib.scm (slib:load): Use primitive-load-path instead of
|
||||||
|
|
156
ice-9/boot-9.scm
156
ice-9/boot-9.scm
|
@ -568,76 +568,6 @@
|
||||||
(or (and default (apply default key args))
|
(or (and default (apply default key args))
|
||||||
(apply error "unhandled-exception:" key args))))
|
(apply error "unhandled-exception:" key args))))
|
||||||
|
|
||||||
;; mostly obsolete.
|
|
||||||
;; A number of internally defined error types were represented
|
|
||||||
;; as integers. Here is the mapping to symbolic names
|
|
||||||
;; and error messages.
|
|
||||||
;;
|
|
||||||
;(define %%system-errors
|
|
||||||
; '((-1 UNKNOWN "Unknown error")
|
|
||||||
; (0 ARGn "Wrong type argument to ")
|
|
||||||
; (1 ARG1 "Wrong type argument in position 1 to ")
|
|
||||||
; (2 ARG2 "Wrong type argument in position 2 to ")
|
|
||||||
; (3 ARG3 "Wrong type argument in position 3 to ")
|
|
||||||
; (4 ARG4 "Wrong type argument in position 4 to ")
|
|
||||||
; (5 ARG5 "Wrong type argument in position 5 to ")
|
|
||||||
; (6 ARG5 "Wrong type argument in position 5 to ")
|
|
||||||
; (7 ARG5 "Wrong type argument in position 5 to ")
|
|
||||||
; (8 WNA "Wrong number of arguments to ")
|
|
||||||
; (9 OVFLOW "Numerical overflow to ")
|
|
||||||
; (10 OUTOFRANGE "Argument out of range to ")
|
|
||||||
; (11 NALLOC "Could not allocate to ")
|
|
||||||
; (12 STACK_OVFLOW "Stack overflow")
|
|
||||||
; (13 EXIT "Exit (internal error?).")
|
|
||||||
; (14 HUP_SIGNAL "hang-up")
|
|
||||||
; (15 INT_SIGNAL "user interrupt")
|
|
||||||
; (16 FPE_SIGNAL "arithmetic error")
|
|
||||||
; (17 BUS_SIGNAL "bus error")
|
|
||||||
; (18 SEGV_SIGNAL "segmentation violation")
|
|
||||||
; (19 ALRM_SIGNAL "alarm")
|
|
||||||
; (20 GC_SIGNAL "gc")
|
|
||||||
; (21 TICK_SIGNAL "tick")))
|
|
||||||
|
|
||||||
|
|
||||||
(define (alarm-thunk) #t)
|
|
||||||
|
|
||||||
(define (signal-handler n)
|
|
||||||
(let* (
|
|
||||||
;; these numbers are set in libguile, not the same as those
|
|
||||||
;; interned in posix.c for SIGSEGV etc.
|
|
||||||
;;
|
|
||||||
(signal-messages `((14 . "hang-up")
|
|
||||||
(15 . "user interrupt")
|
|
||||||
(16 . "arithmetic error")
|
|
||||||
(17 . "bus error")
|
|
||||||
(18 . "segmentation violation"))))
|
|
||||||
(cond
|
|
||||||
((= n 21) (unmask-signals) (timer-thunk))
|
|
||||||
((= n 20) (unmask-signals) (gc-thunk))
|
|
||||||
((= n 19) (unmask-signals) (alarm-thunk))
|
|
||||||
(else (set! the-last-stack
|
|
||||||
(make-stack #t
|
|
||||||
(list-ref (list %hup-thunk
|
|
||||||
%int-thunk
|
|
||||||
%fpe-thunk
|
|
||||||
%bus-thunk
|
|
||||||
%segv-thunk)
|
|
||||||
(- n 14))
|
|
||||||
1))
|
|
||||||
(set! stack-saved? #t)
|
|
||||||
(if (not (and (memq 'debug (debug-options-interface))
|
|
||||||
(eq? (stack-id the-last-stack) 'repl-stack)))
|
|
||||||
(set! the-last-stack #f))
|
|
||||||
(unmask-signals)
|
|
||||||
(let ((sig-pair (assoc n signal-messages)))
|
|
||||||
(scm-error 'error-signal #f
|
|
||||||
(cdr (or sig-pair
|
|
||||||
(cons n "Unknown signal: %s")))
|
|
||||||
(if sig-pair
|
|
||||||
#f
|
|
||||||
(list n))
|
|
||||||
(list n)))))))
|
|
||||||
|
|
||||||
|
|
||||||
;;; {Non-polymorphic versions of POSIX functions}
|
;;; {Non-polymorphic versions of POSIX functions}
|
||||||
|
|
||||||
|
@ -909,21 +839,6 @@
|
||||||
(define (log10 arg)
|
(define (log10 arg)
|
||||||
(/ (log arg) (log 10)))
|
(/ (log arg) (log 10)))
|
||||||
|
|
||||||
|
|
||||||
;;; {User Settable Hooks}
|
|
||||||
;;;
|
|
||||||
;;; Parts of the C code check the bindings of these variables.
|
|
||||||
;;;
|
|
||||||
|
|
||||||
(define ticks-interrupt #f)
|
|
||||||
(define user-interrupt #f)
|
|
||||||
(define alarm-interrupt #f)
|
|
||||||
(define out-of-storage #f)
|
|
||||||
(define could-not-open #f)
|
|
||||||
(define end-of-program #f)
|
|
||||||
(define hang-up #f)
|
|
||||||
(define arithmetic-error #f)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;;; {Reader Extensions}
|
;;; {Reader Extensions}
|
||||||
|
@ -979,31 +894,6 @@
|
||||||
'()
|
'()
|
||||||
(parse-path-symbol (read port))))))
|
(parse-path-symbol (read port))))))
|
||||||
|
|
||||||
;(define (read-sharp c port)
|
|
||||||
; (define (barf)
|
|
||||||
; (error "unknown # object" c))
|
|
||||||
|
|
||||||
; (case c
|
|
||||||
; ((#\/) (let ((look (peek-char port)))
|
|
||||||
; (if (or (eof-object? look)
|
|
||||||
; (and (char? look)
|
|
||||||
; (or (char-whitespace? look)
|
|
||||||
; (string-index ")" look))))
|
|
||||||
; '()
|
|
||||||
; (parse-path-symbol (read port #t read-sharp)))))
|
|
||||||
; ((#\') (read port #t read-sharp))
|
|
||||||
; ((#\.) (eval (read port #t read-sharp)))
|
|
||||||
; ((#\b) (read:uniform-vector #t port))
|
|
||||||
; ((#\a) (read:uniform-vector #\a port))
|
|
||||||
; ((#\u) (read:uniform-vector 1 port))
|
|
||||||
; ((#\e) (read:uniform-vector -1 port))
|
|
||||||
; ((#\s) (read:uniform-vector 1.0 port))
|
|
||||||
; ((#\i) (read:uniform-vector 1/3 port))
|
|
||||||
; ((#\c) (read:uniform-vector 0+i port))
|
|
||||||
; ((#\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9)
|
|
||||||
; (read:array c port))
|
|
||||||
; (else (barf))))
|
|
||||||
|
|
||||||
(define (read:array digit port)
|
(define (read:array digit port)
|
||||||
(define chr0 (char->integer #\0))
|
(define chr0 (char->integer #\0))
|
||||||
(let ((rank (let readnum ((val (- (char->integer digit) chr0)))
|
(let ((rank (let readnum ((val (- (char->integer digit) chr0)))
|
||||||
|
@ -2424,13 +2314,6 @@
|
||||||
(-quit status))))
|
(-quit status))))
|
||||||
|
|
||||||
|
|
||||||
;(define (stand-alone-repl)
|
|
||||||
; (let ((oport (current-input-port)))
|
|
||||||
; (set-current-input-port *stdin*)
|
|
||||||
; (scm-style-repl)
|
|
||||||
; (set-current-input-port oport)))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;;; {IOTA functions: generating lists of numbers}
|
;;; {IOTA functions: generating lists of numbers}
|
||||||
|
|
||||||
|
@ -2603,9 +2486,48 @@
|
||||||
;; (set-current-output-port outp)
|
;; (set-current-output-port outp)
|
||||||
;; (set-current-error-port errp)
|
;; (set-current-error-port errp)
|
||||||
|
|
||||||
|
;; this is just (scm-style-repl) with a wrapper to install and remove
|
||||||
|
;; signal handlers.
|
||||||
(define (top-repl)
|
(define (top-repl)
|
||||||
|
(let ((old-handlers #f)
|
||||||
|
(signals `((,SIGINT . "User interrupt")
|
||||||
|
(,SIGFPE . "Arithmetic error")
|
||||||
|
(,SIGBUS . "Bad memory access (bus error)")
|
||||||
|
(,SIGSEGV . "Bad memory access (Segmentation violation)"))))
|
||||||
|
|
||||||
|
(dynamic-wind
|
||||||
|
|
||||||
|
;; call at entry
|
||||||
|
(lambda ()
|
||||||
|
(let ((make-handler (lambda (msg)
|
||||||
|
(lambda (sig)
|
||||||
|
(scm-error 'signal
|
||||||
|
#f
|
||||||
|
msg
|
||||||
|
#f
|
||||||
|
(list sig))))))
|
||||||
|
(set! old-handlers
|
||||||
|
(map (lambda (sig-msg)
|
||||||
|
(sigaction (car sig-msg)
|
||||||
|
(make-handler (cdr sig-msg))))
|
||||||
|
signals))))
|
||||||
|
|
||||||
|
;; the protected thunk.
|
||||||
|
(lambda ()
|
||||||
(scm-style-repl))
|
(scm-style-repl))
|
||||||
|
|
||||||
|
;; call at exit.
|
||||||
|
(lambda ()
|
||||||
|
(map (lambda (sig-msg old-handler)
|
||||||
|
(if (not (car old-handler))
|
||||||
|
;; restore original C handler.
|
||||||
|
(sigaction (car sig-msg) #f)
|
||||||
|
;; restore Scheme handler, SIG_IGN or SIG_DFL.
|
||||||
|
(sigaction (car sig-msg)
|
||||||
|
(car old-handler)
|
||||||
|
(cdr old-handler))))
|
||||||
|
signals old-handlers)))))
|
||||||
|
|
||||||
(defmacro false-if-exception (expr)
|
(defmacro false-if-exception (expr)
|
||||||
`(catch #t (lambda () ,expr)
|
`(catch #t (lambda () ,expr)
|
||||||
(lambda args #f)))
|
(lambda args #f)))
|
||||||
|
|
|
@ -1,3 +1,32 @@
|
||||||
|
Sat May 31 18:57:51 1997 Gary Houston <ghouston@actrix.gen.nz>
|
||||||
|
|
||||||
|
* scmsigs.h, async.h: updated.
|
||||||
|
|
||||||
|
* _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.
|
||||||
|
|
||||||
Thu May 29 02:47:36 1997 Jim Blandy <jimb@floss.cyclic.com>
|
Thu May 29 02:47:36 1997 Jim Blandy <jimb@floss.cyclic.com>
|
||||||
|
|
||||||
* regex-posix.c (scm_init_regex_posix): Register the "regex"
|
* regex-posix.c (scm_init_regex_posix): Register the "regex"
|
||||||
|
|
|
@ -76,7 +76,18 @@
|
||||||
*/
|
*/
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
/* SCM_SYSCALL retries system calls that have been interrupted (EINTR) */
|
/* SCM_SYSCALL retries system calls that have been interrupted (EINTR).
|
||||||
|
However this can be avoided if the operating system can restart
|
||||||
|
system calls automatically. We assume this is the case if
|
||||||
|
sigaction is available and SA_RESTART is defined; they will be used
|
||||||
|
when installing signal handlers.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_RESTARTS
|
||||||
|
#define SCM_SYSCALL(line) line
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef SCM_SYSCALL
|
||||||
#ifdef vms
|
#ifdef vms
|
||||||
# ifndef __GNUC__
|
# ifndef __GNUC__
|
||||||
# include <ssdef.h>
|
# include <ssdef.h>
|
||||||
|
@ -84,6 +95,7 @@
|
||||||
while(EVMSERR==errno && (vaxc$errno>>3)==(SS$_CONTROLC>>3))
|
while(EVMSERR==errno && (vaxc$errno>>3)==(SS$_CONTROLC>>3))
|
||||||
# endif /* ndef __GNUC__ */
|
# endif /* ndef __GNUC__ */
|
||||||
#endif /* def vms */
|
#endif /* def vms */
|
||||||
|
#endif /* ndef SCM_SYSCALL */
|
||||||
|
|
||||||
#ifndef SCM_SYSCALL
|
#ifndef SCM_SYSCALL
|
||||||
# ifdef EINTR
|
# ifdef EINTR
|
||||||
|
@ -94,7 +106,7 @@
|
||||||
#endif /* ndef SCM_SYSCALL */
|
#endif /* ndef SCM_SYSCALL */
|
||||||
|
|
||||||
#ifndef SCM_SYSCALL
|
#ifndef SCM_SYSCALL
|
||||||
# define SCM_SYSCALL(line) {line;}
|
# define SCM_SYSCALL(line) line;
|
||||||
#endif /* ndef SCM_SYSCALL */
|
#endif /* ndef SCM_SYSCALL */
|
||||||
|
|
||||||
#ifndef MSDOS
|
#ifndef MSDOS
|
||||||
|
|
157
libguile/async.c
157
libguile/async.c
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (C) 1995,1996 Free Software Foundation, Inc.
|
/* Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -100,26 +100,8 @@ static unsigned int scm_switch_clock = 0;
|
||||||
static unsigned int scm_switch_rate = 0;
|
static unsigned int scm_switch_rate = 0;
|
||||||
static unsigned int scm_desired_switch_rate = 0;
|
static unsigned int scm_desired_switch_rate = 0;
|
||||||
|
|
||||||
static SCM system_signal_asyncs[SCM_NUM_SIGS];
|
|
||||||
static SCM handler_var;
|
|
||||||
static SCM symbol_signal;
|
|
||||||
|
|
||||||
|
|
||||||
struct scm_async
|
|
||||||
{
|
|
||||||
int got_it; /* needs to be delivered? */
|
|
||||||
SCM thunk; /* the handler. */
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
static long scm_tc16_async;
|
static long scm_tc16_async;
|
||||||
|
|
||||||
#define SCM_ASYNCP(X) (scm_tc16_async == SCM_GCTYP16 (X))
|
|
||||||
#define SCM_ASYNC(X) ((struct scm_async *)SCM_CDR (X))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int asyncs_pending SCM_P ((void));
|
static int asyncs_pending SCM_P ((void));
|
||||||
|
@ -281,30 +263,8 @@ scm_switch ()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void scm_deliver_signal SCM_P ((int num));
|
|
||||||
|
|
||||||
static void
|
|
||||||
scm_deliver_signal (num)
|
|
||||||
int num;
|
|
||||||
{
|
|
||||||
SCM handler;
|
|
||||||
handler = SCM_CDR (handler_var);
|
|
||||||
if (handler != SCM_BOOL_F)
|
|
||||||
scm_apply (handler, SCM_MAKINUM (num), scm_listofnull);
|
|
||||||
else
|
|
||||||
{
|
|
||||||
scm_mask_ints = 0;
|
|
||||||
scm_throw (symbol_signal,
|
|
||||||
scm_listify (SCM_MAKINUM (num), SCM_UNDEFINED));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static int print_async SCM_P ((SCM exp, SCM port, scm_print_state *pstate));
|
static int print_async SCM_P ((SCM exp, SCM port, scm_print_state *pstate));
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -514,66 +474,6 @@ scm_set_switch_rate (n)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static SCM scm_sys_hup_async_thunk SCM_P ((void));
|
|
||||||
|
|
||||||
static SCM
|
|
||||||
scm_sys_hup_async_thunk ()
|
|
||||||
{
|
|
||||||
scm_deliver_signal (SCM_HUP_SIGNAL);
|
|
||||||
return SCM_BOOL_F;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static SCM scm_sys_int_async_thunk SCM_P ((void));
|
|
||||||
|
|
||||||
static SCM
|
|
||||||
scm_sys_int_async_thunk ()
|
|
||||||
{
|
|
||||||
scm_deliver_signal (SCM_INT_SIGNAL);
|
|
||||||
return SCM_BOOL_F;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static SCM scm_sys_fpe_async_thunk SCM_P ((void));
|
|
||||||
|
|
||||||
static SCM
|
|
||||||
scm_sys_fpe_async_thunk ()
|
|
||||||
{
|
|
||||||
scm_deliver_signal (SCM_FPE_SIGNAL);
|
|
||||||
return SCM_BOOL_F;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static SCM scm_sys_bus_async_thunk SCM_P ((void));
|
|
||||||
|
|
||||||
static SCM
|
|
||||||
scm_sys_bus_async_thunk ()
|
|
||||||
{
|
|
||||||
scm_deliver_signal (SCM_BUS_SIGNAL);
|
|
||||||
return SCM_BOOL_F;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static SCM scm_sys_segv_async_thunk SCM_P ((void));
|
|
||||||
|
|
||||||
static SCM
|
|
||||||
scm_sys_segv_async_thunk ()
|
|
||||||
{
|
|
||||||
scm_deliver_signal (SCM_SEGV_SIGNAL);
|
|
||||||
return SCM_BOOL_F;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static SCM scm_sys_alrm_async_thunk SCM_P ((void));
|
|
||||||
|
|
||||||
static SCM
|
|
||||||
scm_sys_alrm_async_thunk ()
|
|
||||||
{
|
|
||||||
scm_deliver_signal (SCM_ALRM_SIGNAL);
|
|
||||||
return SCM_BOOL_F;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* points to the GC system-async, so that scm_gc_end can find it. */
|
/* points to the GC system-async, so that scm_gc_end can find it. */
|
||||||
SCM scm_gc_async;
|
SCM scm_gc_async;
|
||||||
|
|
||||||
|
@ -597,32 +497,6 @@ scm_sys_gc_async_thunk (void)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SCM
|
|
||||||
scm_take_signal (n)
|
|
||||||
int n;
|
|
||||||
{
|
|
||||||
SCM ignored;
|
|
||||||
if (!scm_ints_disabled)
|
|
||||||
{
|
|
||||||
/* For reasons of speed, the SCM_NEWCELL macro doesn't defer
|
|
||||||
interrupts. Instead, it first sets its argument to point to
|
|
||||||
the first cell in the list, and then advances the freelist
|
|
||||||
pointer to the next cell. Now, if this procedure is
|
|
||||||
interrupted, the only anomalous state possible is to have
|
|
||||||
both SCM_NEWCELL's argument and scm_freelist pointing to the
|
|
||||||
same cell. To deal with this case, we always throw away the
|
|
||||||
first cell in scm_freelist here.
|
|
||||||
|
|
||||||
At least, that's the theory. I'm not convinced that that's
|
|
||||||
the only anomalous path we need to worry about. */
|
|
||||||
SCM_NEWCELL (ignored);
|
|
||||||
}
|
|
||||||
scm_system_async_mark (system_signal_asyncs[SCM_SIG_ORD(n)]);
|
|
||||||
return SCM_BOOL_F;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
SCM_PROC(s_unmask_signals, "unmask-signals", 0, 0, 0, scm_unmask_signals);
|
SCM_PROC(s_unmask_signals, "unmask-signals", 0, 0, 0, scm_unmask_signals);
|
||||||
|
|
||||||
SCM
|
SCM
|
||||||
|
@ -649,39 +523,10 @@ scm_init_async ()
|
||||||
{
|
{
|
||||||
SCM a_thunk;
|
SCM a_thunk;
|
||||||
scm_tc16_async = scm_newsmob (&async_smob);
|
scm_tc16_async = scm_newsmob (&async_smob);
|
||||||
symbol_signal = SCM_CAR (scm_sysintern ("signal", SCM_UNDEFINED));
|
|
||||||
scm_permanent_object (symbol_signal);
|
|
||||||
|
|
||||||
/* These are in the opposite order of delivery priortity.
|
|
||||||
*
|
|
||||||
* Error conditions are given low priority:
|
|
||||||
*/
|
|
||||||
a_thunk = scm_make_gsubr ("%hup-thunk", 0, 0, 0, scm_sys_hup_async_thunk);
|
|
||||||
system_signal_asyncs[SCM_SIG_ORD(SCM_HUP_SIGNAL)] = scm_system_async (a_thunk);
|
|
||||||
a_thunk = scm_make_gsubr ("%int-thunk", 0, 0, 0, scm_sys_int_async_thunk);
|
|
||||||
system_signal_asyncs[SCM_SIG_ORD(SCM_INT_SIGNAL)] = scm_system_async (a_thunk);
|
|
||||||
a_thunk = scm_make_gsubr ("%fpe-thunk", 0, 0, 0, scm_sys_fpe_async_thunk);
|
|
||||||
system_signal_asyncs[SCM_SIG_ORD(SCM_FPE_SIGNAL)] = scm_system_async (a_thunk);
|
|
||||||
a_thunk = scm_make_gsubr ("%bus-thunk", 0, 0, 0, scm_sys_bus_async_thunk);
|
|
||||||
system_signal_asyncs[SCM_SIG_ORD(SCM_BUS_SIGNAL)] = scm_system_async (a_thunk);
|
|
||||||
a_thunk = scm_make_gsubr ("%segv-thunk", 0, 0, 0, scm_sys_segv_async_thunk);
|
|
||||||
system_signal_asyncs[SCM_SIG_ORD(SCM_SEGV_SIGNAL)] = scm_system_async (a_thunk);
|
|
||||||
|
|
||||||
scm_gc_vcell = scm_sysintern ("gc-thunk", SCM_BOOL_F);
|
scm_gc_vcell = scm_sysintern ("gc-thunk", SCM_BOOL_F);
|
||||||
a_thunk = scm_make_gsubr ("%gc-thunk", 0, 0, 0, scm_sys_gc_async_thunk);
|
a_thunk = scm_make_gsubr ("%gc-thunk", 0, 0, 0, scm_sys_gc_async_thunk);
|
||||||
scm_gc_async = scm_system_async (a_thunk);
|
scm_gc_async = scm_system_async (a_thunk);
|
||||||
|
|
||||||
/* Clock and PC driven conditions are given highest priority. */
|
|
||||||
/*
|
|
||||||
a_thunk = scm_make_gsubr ("%tick-thunk", 0, 0, 0, scm_sys_tick_async_thunk);
|
|
||||||
system_signal_asyncs[SCM_SIG_ORD(SCM_TICK_SIGNAL)] = scm_system_async (a_thunk);
|
|
||||||
*/
|
|
||||||
|
|
||||||
a_thunk = scm_make_gsubr ("%alrm-thunk", 0, 0, 0, scm_sys_alrm_async_thunk);
|
|
||||||
system_signal_asyncs[SCM_SIG_ORD(SCM_ALRM_SIGNAL)] = scm_system_async (a_thunk);
|
|
||||||
|
|
||||||
handler_var = scm_sysintern ("signal-handler", SCM_UNDEFINED);
|
|
||||||
SCM_SETCDR (handler_var, SCM_BOOL_F);
|
|
||||||
scm_permanent_object (handler_var);
|
|
||||||
#include "async.x"
|
#include "async.x"
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#ifndef ASYNCH
|
#ifndef ASYNCH
|
||||||
#define ASYNCH
|
#define ASYNCH
|
||||||
/* Copyright (C) 1995,1996 Free Software Foundation, Inc.
|
/* Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -47,6 +47,16 @@
|
||||||
#include "libguile/__scm.h"
|
#include "libguile/__scm.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#define SCM_ASYNCP(X) (scm_tc16_async == SCM_GCTYP16 (X))
|
||||||
|
#define SCM_ASYNC(X) ((struct scm_async *)SCM_CDR (X))
|
||||||
|
|
||||||
|
struct scm_async
|
||||||
|
{
|
||||||
|
int got_it; /* needs to be delivered? */
|
||||||
|
SCM thunk; /* the handler. */
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern unsigned int scm_mask_ints;
|
extern unsigned int scm_mask_ints;
|
||||||
|
@ -63,7 +73,6 @@ extern SCM scm_run_asyncs SCM_P ((SCM list_of_a));
|
||||||
extern SCM scm_noop SCM_P ((SCM args));
|
extern SCM scm_noop SCM_P ((SCM args));
|
||||||
extern SCM scm_set_tick_rate SCM_P ((SCM n));
|
extern SCM scm_set_tick_rate SCM_P ((SCM n));
|
||||||
extern SCM scm_set_switch_rate SCM_P ((SCM n));
|
extern SCM scm_set_switch_rate SCM_P ((SCM n));
|
||||||
extern SCM scm_take_signal SCM_P ((int n));
|
|
||||||
extern SCM scm_unmask_signals SCM_P ((void));
|
extern SCM scm_unmask_signals SCM_P ((void));
|
||||||
extern SCM scm_mask_signals SCM_P ((void));
|
extern SCM scm_mask_signals SCM_P ((void));
|
||||||
extern void scm_init_async SCM_P ((void));
|
extern void scm_init_async SCM_P ((void));
|
||||||
|
|
|
@ -473,8 +473,6 @@ scm_boot_guile_1 (base, closure)
|
||||||
setjmp_val = setjmp (SCM_JMPBUF (scm_rootcont));
|
setjmp_val = setjmp (SCM_JMPBUF (scm_rootcont));
|
||||||
if (!setjmp_val)
|
if (!setjmp_val)
|
||||||
{
|
{
|
||||||
scm_init_signals ();
|
|
||||||
|
|
||||||
scm_set_program_arguments (closure->argc, closure->argv, 0);
|
scm_set_program_arguments (closure->argc, closure->argv, 0);
|
||||||
scm_internal_catch (SCM_BOOL_T, invoke_main_func, closure,
|
scm_internal_catch (SCM_BOOL_T, invoke_main_func, closure,
|
||||||
scm_handle_by_message, 0);
|
scm_handle_by_message, 0);
|
||||||
|
|
|
@ -811,7 +811,7 @@ scm_uname ()
|
||||||
SCM ans = scm_make_vector(SCM_MAKINUM(5), SCM_UNSPECIFIED, SCM_BOOL_F);
|
SCM ans = scm_make_vector(SCM_MAKINUM(5), SCM_UNSPECIFIED, SCM_BOOL_F);
|
||||||
SCM *ve = SCM_VELTS (ans);
|
SCM *ve = SCM_VELTS (ans);
|
||||||
SCM_DEFER_INTS;
|
SCM_DEFER_INTS;
|
||||||
if (uname (&buf))
|
if (uname (&buf) < 0)
|
||||||
scm_syserror (s_uname);
|
scm_syserror (s_uname);
|
||||||
ve[0] = scm_makfrom0str (buf.sysname);
|
ve[0] = scm_makfrom0str (buf.sysname);
|
||||||
ve[1] = scm_makfrom0str (buf.nodename);
|
ve[1] = scm_makfrom0str (buf.nodename);
|
||||||
|
@ -921,9 +921,7 @@ scm_open_pipe (pipestr, modes)
|
||||||
modes = scm_makfromstr (SCM_ROCHARS (modes), SCM_ROLENGTH (modes), 0);
|
modes = scm_makfromstr (SCM_ROCHARS (modes), SCM_ROLENGTH (modes), 0);
|
||||||
SCM_NEWCELL (z);
|
SCM_NEWCELL (z);
|
||||||
SCM_DEFER_INTS;
|
SCM_DEFER_INTS;
|
||||||
scm_ignore_signals ();
|
|
||||||
SCM_SYSCALL (f = popen (SCM_ROCHARS (pipestr), SCM_ROCHARS (modes)));
|
SCM_SYSCALL (f = popen (SCM_ROCHARS (pipestr), SCM_ROCHARS (modes)));
|
||||||
scm_unignore_signals ();
|
|
||||||
if (!f)
|
if (!f)
|
||||||
scm_syserror (s_open_pipe);
|
scm_syserror (s_open_pipe);
|
||||||
pt = scm_add_to_port_table (z);
|
pt = scm_add_to_port_table (z);
|
||||||
|
|
|
@ -158,6 +158,9 @@
|
||||||
/* Define if you want support for dynamic linking. */
|
/* Define if you want support for dynamic linking. */
|
||||||
#undef DYNAMIC_LINKING
|
#undef DYNAMIC_LINKING
|
||||||
|
|
||||||
|
/* Define if the operating system can restart system calls. */
|
||||||
|
#undef HAVE_RESTARTS
|
||||||
|
|
||||||
/* Define if you have the ctermid function. */
|
/* Define if you have the ctermid function. */
|
||||||
#undef HAVE_CTERMID
|
#undef HAVE_CTERMID
|
||||||
|
|
||||||
|
@ -227,6 +230,9 @@
|
||||||
/* Define if you have the shl_load function. */
|
/* Define if you have the shl_load function. */
|
||||||
#undef HAVE_SHL_LOAD
|
#undef HAVE_SHL_LOAD
|
||||||
|
|
||||||
|
/* Define if you have the sigaction function. */
|
||||||
|
#undef HAVE_SIGACTION
|
||||||
|
|
||||||
/* Define if you have the strerror function. */
|
/* Define if you have the strerror function. */
|
||||||
#undef HAVE_STRERROR
|
#undef HAVE_STRERROR
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* Copyright (C) 1995,1996 Free Software Foundation, Inc.
|
/* Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -44,6 +44,8 @@
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include "_scm.h"
|
#include "_scm.h"
|
||||||
|
|
||||||
|
#include "async.h"
|
||||||
|
#include "eval.h"
|
||||||
#include "scmsigs.h"
|
#include "scmsigs.h"
|
||||||
|
|
||||||
#ifdef HAVE_UNISTD_H
|
#ifdef HAVE_UNISTD_H
|
||||||
|
@ -53,10 +55,6 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if (__TURBOC__==1)
|
|
||||||
#define signal ssignal /* Needed for TURBOC V1.0 */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef USE_MIT_PTHREADS
|
#ifdef USE_MIT_PTHREADS
|
||||||
#undef signal
|
#undef signal
|
||||||
#define signal pthread_signal
|
#define signal pthread_signal
|
||||||
|
@ -70,75 +68,248 @@
|
||||||
# define SIGRETTYPE RETSIGTYPE
|
# define SIGRETTYPE RETSIGTYPE
|
||||||
#else
|
#else
|
||||||
# ifdef STDC_HEADERS
|
# ifdef STDC_HEADERS
|
||||||
#if (__TURBOC__==1)
|
|
||||||
#define SIGRETTYPE int
|
|
||||||
#else
|
|
||||||
#define SIGRETTYPE void
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#ifdef linux
|
|
||||||
# define SIGRETTYPE void
|
# define SIGRETTYPE void
|
||||||
# else
|
# else
|
||||||
# define SIGRETTYPE int
|
# define SIGRETTYPE int
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef vms
|
|
||||||
#ifdef __GNUC__
|
|
||||||
#define SIGRETTYPE int
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#define SIGFN(NAME, SCM_NAME, SIGNAL) \
|
/* take_signal is installed as the C signal handler whenever a Scheme
|
||||||
static SIGRETTYPE \
|
handler is set. when a signal arrives, take_signal marks the corresponding
|
||||||
NAME (sig) \
|
element of got_signal and marks signal_async. the thunk in signal_async
|
||||||
int sig; \
|
(sys_deliver_signals) will be run at the next opportunity, outside a
|
||||||
{ \
|
critical section. sys_deliver_signals runs each Scheme handler for
|
||||||
signal (SIGNAL, NAME); \
|
which got_signal is set. */
|
||||||
scm_take_signal (SCM_NAME); \
|
|
||||||
|
static SCM signal_async;
|
||||||
|
|
||||||
|
static char got_signal[NSIG];
|
||||||
|
|
||||||
|
/* a Scheme vector of handler procedures. */
|
||||||
|
static SCM *signal_handlers;
|
||||||
|
|
||||||
|
/* saves the original C handlers, when a new handler is installed.
|
||||||
|
set to SIG_ERR if the original handler is installed. */
|
||||||
|
#ifdef HAVE_SIGACTION
|
||||||
|
static struct sigaction orig_handlers[NSIG];
|
||||||
|
#else
|
||||||
|
static SIGRETTYPE (*orig_handlers)(int)[NSIG];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static SIGRETTYPE
|
||||||
|
take_signal (int signum)
|
||||||
|
{
|
||||||
|
SCM ignored;
|
||||||
|
if (!scm_ints_disabled)
|
||||||
|
{
|
||||||
|
/* For reasons of speed, the SCM_NEWCELL macro doesn't defer
|
||||||
|
interrupts. Instead, it first sets its argument to point to
|
||||||
|
the first cell in the list, and then advances the freelist
|
||||||
|
pointer to the next cell. Now, if this procedure is
|
||||||
|
interrupted, the only anomalous state possible is to have
|
||||||
|
both SCM_NEWCELL's argument and scm_freelist pointing to the
|
||||||
|
same cell. To deal with this case, we always throw away the
|
||||||
|
first cell in scm_freelist here.
|
||||||
|
|
||||||
|
At least, that's the theory. I'm not convinced that that's
|
||||||
|
the only anomalous path we need to worry about. */
|
||||||
|
SCM_NEWCELL (ignored);
|
||||||
|
}
|
||||||
|
got_signal[signum] = 1;
|
||||||
|
#if HAVE_SIGACTION
|
||||||
|
/* unblock the signal before the scheme handler gets to run, since
|
||||||
|
it may use longjmp to escape (i.e., throw an exception). */
|
||||||
|
{
|
||||||
|
sigset_t set;
|
||||||
|
sigemptyset (&set);
|
||||||
|
sigaddset (&set, signum);
|
||||||
|
sigprocmask (SIG_UNBLOCK, &set, NULL);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
scm_system_async_mark (signal_async);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SIGHUP
|
static SCM
|
||||||
SIGFN(scm_hup_signal, SCM_HUP_SIGNAL, SIGHUP)
|
sys_deliver_signals (void)
|
||||||
#endif
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
#ifdef SIGINT
|
for (i = 0; i < NSIG; i++)
|
||||||
SIGFN(scm_int_signal, SCM_INT_SIGNAL, SIGINT)
|
{
|
||||||
|
if (got_signal[i])
|
||||||
|
{
|
||||||
|
scm_apply (SCM_VELTS (*signal_handlers)[i],
|
||||||
|
scm_listify (SCM_MAKINUM (i), SCM_UNDEFINED),
|
||||||
|
SCM_EOL);
|
||||||
|
got_signal[i] = 0;
|
||||||
|
#ifndef HAVE_SIGACTION
|
||||||
|
signal (i, take_signal);
|
||||||
#endif
|
#endif
|
||||||
|
}
|
||||||
#ifdef SIGFPE
|
}
|
||||||
SIGFN(scm_fpe_signal, SCM_FPE_SIGNAL, SIGFPE)
|
return SCM_UNSPECIFIED;
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SIGBUS
|
|
||||||
SIGFN(scm_bus_signal, SCM_BUS_SIGNAL, SIGBUS)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SIGSEGV
|
|
||||||
SIGFN(scm_segv_signal, SCM_SEGV_SIGNAL, SIGSEGV)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SIGALRM
|
|
||||||
SIGFN(scm_alrm_signal, SCM_ALRM_SIGNAL, SIGALRM)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define FAKESIGFN(NAME, SCM_NAME) \
|
|
||||||
static SIGRETTYPE \
|
|
||||||
NAME (sig) \
|
|
||||||
int sig; \
|
|
||||||
{ \
|
|
||||||
scm_take_signal (SCM_NAME); \
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
/* user interface for installation of signal handlers. */
|
||||||
/* !!! */
|
SCM_PROC(s_sigaction, "sigaction", 1, 2, 0, scm_sigaction);
|
||||||
FAKESIGFN(scm_gc_signal, SCM_GC_SIGNAL)
|
SCM
|
||||||
FAKESIGFN(scm_tick_signal, SCM_TICK_SIGNAL)
|
scm_sigaction (SCM signum, SCM handler, SCM flags)
|
||||||
|
{
|
||||||
|
int csig;
|
||||||
|
#ifdef HAVE_SIGACTION
|
||||||
|
struct sigaction action;
|
||||||
|
struct sigaction old_action;
|
||||||
|
#else
|
||||||
|
SIGRETTYPE (* chandler) (int);
|
||||||
|
SIGRETTYPE (* old_chandler) (int);
|
||||||
#endif
|
#endif
|
||||||
|
int query_only = 0;
|
||||||
|
int save_handler = 0;
|
||||||
|
SCM *scheme_handlers = SCM_VELTS (*signal_handlers);
|
||||||
|
SCM old_handler;
|
||||||
|
|
||||||
|
SCM_ASSERT (SCM_INUMP (signum), signum, SCM_ARG1, s_sigaction);
|
||||||
|
csig = SCM_INUM (signum);
|
||||||
|
#ifdef HAVE_SIGACTION
|
||||||
|
/* always use restartable system calls if available. */
|
||||||
|
#ifdef SA_RESTART
|
||||||
|
action.sa_flags = SA_RESTART;
|
||||||
|
#else
|
||||||
|
action.sa_flags = 0;
|
||||||
|
#endif
|
||||||
|
if (!SCM_UNBNDP (flags))
|
||||||
|
{
|
||||||
|
SCM_ASSERT (SCM_INUMP (flags), flags, SCM_ARG3, s_sigaction);
|
||||||
|
action.sa_flags |= SCM_INUM (flags);
|
||||||
|
}
|
||||||
|
sigemptyset (&action.sa_mask);
|
||||||
|
#endif
|
||||||
|
SCM_DEFER_INTS;
|
||||||
|
old_handler = scheme_handlers[csig];
|
||||||
|
if (SCM_UNBNDP (handler))
|
||||||
|
query_only = 1;
|
||||||
|
else if (SCM_INUMP (handler))
|
||||||
|
{
|
||||||
|
if (SCM_INUM (handler) == (int) SIG_DFL
|
||||||
|
|| SCM_INUM (handler) == (int) SIG_IGN)
|
||||||
|
{
|
||||||
|
#ifdef HAVE_SIGACTION
|
||||||
|
action.sa_handler = (SIGRETTYPE (*) (int)) SCM_INUM (handler);
|
||||||
|
#else
|
||||||
|
chandler = (SIGRETTYPE (*) (int)) SCM_INUM (handler);
|
||||||
|
#endif
|
||||||
|
scheme_handlers[csig] = SCM_BOOL_F;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
scm_out_of_range (s_sigaction, handler);
|
||||||
|
}
|
||||||
|
else if (SCM_FALSEP (handler))
|
||||||
|
{
|
||||||
|
/* restore the default handler. */
|
||||||
|
#ifdef HAVE_SIGACTION
|
||||||
|
if (orig_handlers[csig].sa_handler == SIG_ERR)
|
||||||
|
query_only = 1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
action = orig_handlers[csig];
|
||||||
|
orig_handlers[csig].sa_handler = SIG_ERR;
|
||||||
|
scheme_handlers[csig] = SCM_BOOL_F;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
if (orig_handlers[csig] == SIG_ERR)
|
||||||
|
query_only = 1;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
chandler = orig_handlers[csig];
|
||||||
|
orig_handlers[csig] = SIG_ERR;
|
||||||
|
scheme_handlers[csig] = SCM_BOOL_F;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SCM_ASSERT (SCM_NIMP (handler), handler, SCM_ARG2, s_sigaction);
|
||||||
|
#ifdef HAVE_SIGACTION
|
||||||
|
action.sa_handler = take_signal;
|
||||||
|
if (orig_handlers[csig].sa_handler == SIG_ERR)
|
||||||
|
save_handler = 1;
|
||||||
|
#else
|
||||||
|
chandler = take_signal;
|
||||||
|
if (orig_handlers[csig] == SIG_ERR)
|
||||||
|
save_handler = 1;
|
||||||
|
#endif
|
||||||
|
scheme_handlers[csig] = handler;
|
||||||
|
}
|
||||||
|
#ifdef HAVE_SIGACTION
|
||||||
|
if (query_only)
|
||||||
|
{
|
||||||
|
if (sigaction (csig, 0, &old_action) == -1)
|
||||||
|
scm_syserror (s_sigaction);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (sigaction (csig, &action , &old_action) == -1)
|
||||||
|
scm_syserror (s_sigaction);
|
||||||
|
if (save_handler)
|
||||||
|
orig_handlers[csig] = old_action;
|
||||||
|
}
|
||||||
|
if (old_action.sa_handler == SIG_DFL || old_action.sa_handler == SIG_IGN)
|
||||||
|
old_handler = SCM_MAKINUM ((int) old_action.sa_handler);
|
||||||
|
SCM_ALLOW_INTS;
|
||||||
|
return scm_cons (old_handler, SCM_MAKINUM (old_action.sa_flags));
|
||||||
|
#else
|
||||||
|
if (query_only)
|
||||||
|
{
|
||||||
|
if ((old_chandler = signal (csig, SIG_IGN)) == SIG_ERR)
|
||||||
|
scm_syserror (s_sigaction);
|
||||||
|
if (signal (csig, old_chandler) == SIG_ERR)
|
||||||
|
scm_syserror (s_sigaction);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ((old_chandler = signal (csig, chandler)) == SIG_ERR)
|
||||||
|
scm_syserror (s_sigaction);
|
||||||
|
if (save_handler)
|
||||||
|
orig_handlers[csig] = old_chandler;
|
||||||
|
}
|
||||||
|
if (old_chandler == SIG_DFL || old_chandler == SIG_IGN)
|
||||||
|
old_handler = SCM_MAKINUM ((int) old_chandler);
|
||||||
|
SCM_ALLOW_INTS;
|
||||||
|
return scm_cons (old_handler, SCM_MAKINUM (0));
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
SCM_PROC (s_restore_signals, "restore-signals", 0, 0, 0, scm_restore_signals);
|
||||||
|
SCM
|
||||||
|
scm_restore_signals (void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
SCM *scheme_handlers = SCM_VELTS (*signal_handlers);
|
||||||
|
|
||||||
|
for (i = 0; i < NSIG; i++)
|
||||||
|
{
|
||||||
|
#ifdef HAVE_SIGACTION
|
||||||
|
if (orig_handlers[i].sa_handler != SIG_ERR)
|
||||||
|
{
|
||||||
|
if (sigaction (i, &orig_handlers[i], NULL) == -1)
|
||||||
|
scm_syserror (s_restore_signals);
|
||||||
|
orig_handlers[i].sa_handler = SIG_ERR;
|
||||||
|
scheme_handlers[i] = SCM_BOOL_F;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
if (orig_handlers[i] != SIG_ERR)
|
||||||
|
{
|
||||||
|
if (signal (i, orig_handlers[i]) == SIG_ERR)
|
||||||
|
scm_syserror (s_restore_signals);
|
||||||
|
orig_handlers[i] = SIG_ERR;
|
||||||
|
scheme_handlers[i] = SCM_BOOL_F;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return SCM_UNSPECIFIED;
|
||||||
|
}
|
||||||
|
|
||||||
SCM_PROC(s_alarm, "alarm", 1, 0, 0, scm_alarm);
|
SCM_PROC(s_alarm, "alarm", 1, 0, 0, scm_alarm);
|
||||||
|
|
||||||
|
@ -148,11 +319,10 @@ scm_alarm (i)
|
||||||
{
|
{
|
||||||
unsigned int j;
|
unsigned int j;
|
||||||
SCM_ASSERT (SCM_INUMP (i) && (SCM_INUM (i) >= 0), i, SCM_ARG1, s_alarm);
|
SCM_ASSERT (SCM_INUMP (i) && (SCM_INUM (i) >= 0), i, SCM_ARG1, s_alarm);
|
||||||
SCM_SYSCALL (j = alarm (SCM_INUM (i)));
|
j = alarm (SCM_INUM (i));
|
||||||
return SCM_MAKINUM (j);
|
return SCM_MAKINUM (j);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SCM_PROC(s_pause, "pause", 0, 0, 0, scm_pause);
|
SCM_PROC(s_pause, "pause", 0, 0, 0, scm_pause);
|
||||||
|
|
||||||
SCM
|
SCM
|
||||||
|
@ -170,11 +340,7 @@ scm_sleep (i)
|
||||||
{
|
{
|
||||||
unsigned int j;
|
unsigned int j;
|
||||||
SCM_ASSERT (SCM_INUMP (i) && (SCM_INUM (i) >= 0), i, SCM_ARG1, s_sleep);
|
SCM_ASSERT (SCM_INUMP (i) && (SCM_INUM (i) >= 0), i, SCM_ARG1, s_sleep);
|
||||||
#ifdef __HIGHC__
|
j = sleep (SCM_INUM(i));
|
||||||
SCM_SYSCALL(j = 0; sleep(SCM_INUM(i)););
|
|
||||||
#else
|
|
||||||
SCM_SYSCALL(j = sleep(SCM_INUM(i)););
|
|
||||||
#endif
|
|
||||||
return SCM_MAKINUM (j);
|
return SCM_MAKINUM (j);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -185,184 +351,50 @@ scm_raise(sig)
|
||||||
SCM sig;
|
SCM sig;
|
||||||
{
|
{
|
||||||
SCM_ASSERT(SCM_INUMP(sig), sig, SCM_ARG1, s_raise);
|
SCM_ASSERT(SCM_INUMP(sig), sig, SCM_ARG1, s_raise);
|
||||||
# ifdef vms
|
SCM_DEFER_INTS;
|
||||||
return SCM_MAKINUM(gsignal((int)SCM_INUM(sig)));
|
if (kill (getpid (), (int) SCM_INUM (sig)) != 0)
|
||||||
# else
|
scm_syserror (s_raise);
|
||||||
return kill (getpid(), (int)SCM_INUM(sig)) ? SCM_BOOL_F : SCM_BOOL_T;
|
SCM_ALLOW_INTS;
|
||||||
# endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef SIGHUP
|
|
||||||
static SIGRETTYPE (*oldhup) ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SIGINT
|
|
||||||
static SIGRETTYPE (*oldint) ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SIGFPE
|
|
||||||
static SIGRETTYPE (*oldfpe) ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SIGBUS
|
|
||||||
static SIGRETTYPE (*oldbus) ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SIGSEGV /* AMIGA lacks! */
|
|
||||||
static SIGRETTYPE (*oldsegv) ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SIGALRM
|
|
||||||
static SIGRETTYPE (*oldalrm) ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef SIGPIPE
|
|
||||||
static SIGRETTYPE (*oldpipe) ();
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
scm_init_signals ()
|
|
||||||
{
|
|
||||||
#ifdef SIGINT
|
|
||||||
oldint = signal (SIGINT, scm_int_signal);
|
|
||||||
#endif
|
|
||||||
#ifdef SIGHUP
|
|
||||||
oldhup = signal (SIGHUP, scm_hup_signal);
|
|
||||||
#endif
|
|
||||||
#ifdef SIGFPE
|
|
||||||
oldfpe = signal (SIGFPE, scm_fpe_signal);
|
|
||||||
#endif
|
|
||||||
#ifdef SIGBUS
|
|
||||||
oldbus = signal (SIGBUS, scm_bus_signal);
|
|
||||||
#endif
|
|
||||||
#ifdef SIGSEGV /* AMIGA lacks! */
|
|
||||||
oldsegv = signal (SIGSEGV, scm_segv_signal);
|
|
||||||
#endif
|
|
||||||
#ifdef SIGALRM
|
|
||||||
alarm (0); /* kill any pending ALRM interrupts */
|
|
||||||
oldalrm = signal (SIGALRM, scm_alrm_signal);
|
|
||||||
#endif
|
|
||||||
#ifdef SIGPIPE
|
|
||||||
oldpipe = signal (SIGPIPE, SIG_IGN);
|
|
||||||
#endif
|
|
||||||
#ifdef ultrix
|
|
||||||
siginterrupt (SIGINT, 1);
|
|
||||||
siginterrupt (SIGALRM, 1);
|
|
||||||
siginterrupt (SIGHUP, 1);
|
|
||||||
siginterrupt (SIGPIPE, 1);
|
|
||||||
#endif /* ultrix */
|
|
||||||
}
|
|
||||||
|
|
||||||
/* This is used in preparation for a possible fork(). Ignore all
|
|
||||||
signals before the fork so that child will catch only if it
|
|
||||||
establishes a handler */
|
|
||||||
|
|
||||||
void
|
|
||||||
scm_ignore_signals ()
|
|
||||||
{
|
|
||||||
#ifdef ultrix
|
|
||||||
siginterrupt (SIGINT, 0);
|
|
||||||
siginterrupt (SIGALRM, 0);
|
|
||||||
siginterrupt (SIGHUP, 0);
|
|
||||||
siginterrupt (SIGPIPE, 0);
|
|
||||||
#endif /* ultrix */
|
|
||||||
signal (SIGINT, SIG_IGN);
|
|
||||||
#ifdef SIGHUP
|
|
||||||
signal (SIGHUP, SIG_DFL);
|
|
||||||
#endif
|
|
||||||
#ifdef SCM_FLOATS
|
|
||||||
signal (SIGFPE, SIG_DFL);
|
|
||||||
#endif
|
|
||||||
#ifdef SIGBUS
|
|
||||||
signal (SIGBUS, SIG_DFL);
|
|
||||||
#endif
|
|
||||||
#ifdef SIGSEGV /* AMIGA lacks! */
|
|
||||||
signal (SIGSEGV, SIG_DFL);
|
|
||||||
#endif
|
|
||||||
/* Some documentation claims that ALRMs are cleared accross forks.
|
|
||||||
If this is not always true then the value returned by alarm(0)
|
|
||||||
will have to be saved and scm_unignore_signals() will have to
|
|
||||||
reinstate it. */
|
|
||||||
/* This code should be neccessary only if the forked process calls
|
|
||||||
alarm() without establishing a handler:
|
|
||||||
#ifdef SIGALRM
|
|
||||||
oldalrm = signal(SIGALRM, SIG_DFL);
|
|
||||||
#endif */
|
|
||||||
/* These flushes are per warning in man page on fork(). */
|
|
||||||
fflush (stdout);
|
|
||||||
fflush (stderr);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
scm_unignore_signals ()
|
|
||||||
{
|
|
||||||
signal (SIGINT, scm_int_signal);
|
|
||||||
#ifdef SIGHUP
|
|
||||||
signal (SIGHUP, scm_hup_signal);
|
|
||||||
#endif
|
|
||||||
#ifdef SCM_FLOATS
|
|
||||||
signal (SIGFPE, scm_fpe_signal);
|
|
||||||
#endif
|
|
||||||
#ifdef SIGBUS
|
|
||||||
signal (SIGBUS, scm_bus_signal);
|
|
||||||
#endif
|
|
||||||
#ifdef SIGSEGV /* AMIGA lacks! */
|
|
||||||
signal (SIGSEGV, scm_segv_signal);
|
|
||||||
#endif
|
|
||||||
#ifdef SIGALRM
|
|
||||||
signal (SIGALRM, scm_alrm_signal);
|
|
||||||
#endif
|
|
||||||
#ifdef ultrix
|
|
||||||
siginterrupt (SIGINT, 1);
|
|
||||||
siginterrupt (SIGALRM, 1);
|
|
||||||
siginterrupt (SIGHUP, 1);
|
|
||||||
siginterrupt (SIGPIPE, 1);
|
|
||||||
#endif /* ultrix */
|
|
||||||
}
|
|
||||||
|
|
||||||
SCM_PROC (s_restore_signals, "restore-signals", 0, 0, 0, scm_restore_signals);
|
|
||||||
|
|
||||||
SCM
|
|
||||||
scm_restore_signals ()
|
|
||||||
{
|
|
||||||
#ifdef ultrix
|
|
||||||
siginterrupt (SIGINT, 0);
|
|
||||||
siginterrupt (SIGALRM, 0);
|
|
||||||
siginterrupt (SIGHUP, 0);
|
|
||||||
siginterrupt (SIGPIPE, 0);
|
|
||||||
#endif /* ultrix */
|
|
||||||
signal (SIGINT, oldint);
|
|
||||||
#ifdef SIGHUP
|
|
||||||
signal (SIGHUP, oldhup);
|
|
||||||
#endif
|
|
||||||
#ifdef SCM_FLOATS
|
|
||||||
signal (SIGFPE, oldfpe);
|
|
||||||
#endif
|
|
||||||
#ifdef SIGBUS
|
|
||||||
signal (SIGBUS, oldbus);
|
|
||||||
#endif
|
|
||||||
#ifdef SIGSEGV /* AMIGA lacks! */
|
|
||||||
signal (SIGSEGV, oldsegv);
|
|
||||||
#endif
|
|
||||||
#ifdef SIGPIPE
|
|
||||||
signal (SIGPIPE, oldpipe);
|
|
||||||
#endif
|
|
||||||
#ifdef SIGALRM
|
|
||||||
alarm (0); /* kill any pending ALRM interrupts */
|
|
||||||
signal (SIGALRM, oldalrm);
|
|
||||||
#endif
|
|
||||||
return SCM_UNSPECIFIED;
|
return SCM_UNSPECIFIED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
scm_init_scmsigs ()
|
scm_init_scmsigs ()
|
||||||
{
|
{
|
||||||
|
SCM thunk;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
signal_handlers =
|
||||||
|
SCM_CDRLOC (scm_sysintern ("signal-handlers",
|
||||||
|
scm_make_vector (SCM_MAKINUM (NSIG),
|
||||||
|
SCM_BOOL_F,
|
||||||
|
SCM_BOOL_F)));
|
||||||
|
thunk = scm_make_gsubr ("%deliver-signals", 0, 0, 0,
|
||||||
|
sys_deliver_signals);
|
||||||
|
signal_async = scm_system_async (thunk);
|
||||||
|
|
||||||
|
for (i = 0; i < NSIG; i++)
|
||||||
|
{
|
||||||
|
got_signal[i] = 0;
|
||||||
|
#ifdef HAVE_SIGACTION
|
||||||
|
orig_handlers[i].sa_handler = SIG_ERR;
|
||||||
|
#else
|
||||||
|
orig_handlers[i] = SIG_ERR;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
scm_sysintern ("NSIG", scm_long2num (NSIG));
|
||||||
|
scm_sysintern ("SIG_IGN", scm_long2num ((long) SIG_IGN));
|
||||||
|
scm_sysintern ("SIG_DFL", scm_long2num ((long) SIG_DFL));
|
||||||
|
#ifdef SA_NOCLDSTOP
|
||||||
|
scm_sysintern ("SA_NOCLDSTOP", scm_long2num (SA_NOCLDSTOP));
|
||||||
|
#endif
|
||||||
|
#ifdef SA_RESTART
|
||||||
|
scm_sysintern ("SA_RESTART", scm_long2num (SA_RESTART));
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "scmsigs.x"
|
#include "scmsigs.x"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
#ifndef SCMSIGSH
|
#ifndef SCMSIGSH
|
||||||
#define SCMSIGSH
|
#define SCMSIGSH
|
||||||
/* Copyright (C) 1995,1996 Free Software Foundation, Inc.
|
/* Copyright (C) 1995,1996,1997 Free Software Foundation, Inc.
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
@ -47,14 +47,12 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
extern SCM scm_sigaction (SCM signum, SCM handler, SCM flags);
|
||||||
|
extern SCM scm_restore_signals SCM_P ((void));
|
||||||
extern SCM scm_alarm SCM_P ((SCM i));
|
extern SCM scm_alarm SCM_P ((SCM i));
|
||||||
extern SCM scm_pause SCM_P ((void));
|
extern SCM scm_pause SCM_P ((void));
|
||||||
extern SCM scm_sleep SCM_P ((SCM i));
|
extern SCM scm_sleep SCM_P ((SCM i));
|
||||||
extern SCM scm_raise SCM_P ((SCM sig));
|
extern SCM scm_raise SCM_P ((SCM sig));
|
||||||
extern void scm_init_signals SCM_P ((void));
|
|
||||||
extern void scm_ignore_signals SCM_P ((void));
|
|
||||||
extern void scm_unignore_signals SCM_P ((void));
|
|
||||||
extern SCM scm_restore_signals SCM_P ((void));
|
|
||||||
extern void scm_init_scmsigs SCM_P ((void));
|
extern void scm_init_scmsigs SCM_P ((void));
|
||||||
|
|
||||||
#endif /* SCMSIGSH */
|
#endif /* SCMSIGSH */
|
||||||
|
|
|
@ -614,6 +614,8 @@ scm_compile_shell_switches (int argc, char **argv)
|
||||||
quit. */
|
quit. */
|
||||||
tail = scm_cons (scm_cons (sym_quit, SCM_EOL),
|
tail = scm_cons (scm_cons (sym_quit, SCM_EOL),
|
||||||
tail);
|
tail);
|
||||||
|
/* Allow asyncs (signal handlers etc.) to be run. */
|
||||||
|
scm_mask_ints = 0;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
/* We want a path only containing directories from SCHEME_LOAD_PATH,
|
/* We want a path only containing directories from SCHEME_LOAD_PATH,
|
||||||
|
|
|
@ -67,13 +67,11 @@ scm_system(cmd)
|
||||||
SCM_ASSERT(SCM_NIMP(cmd) && SCM_ROSTRINGP(cmd), cmd, SCM_ARG1, s_system);
|
SCM_ASSERT(SCM_NIMP(cmd) && SCM_ROSTRINGP(cmd), cmd, SCM_ARG1, s_system);
|
||||||
if (SCM_ROSTRINGP (cmd))
|
if (SCM_ROSTRINGP (cmd))
|
||||||
cmd = scm_makfromstr (SCM_ROCHARS (cmd), SCM_ROLENGTH (cmd), 0);
|
cmd = scm_makfromstr (SCM_ROCHARS (cmd), SCM_ROLENGTH (cmd), 0);
|
||||||
scm_ignore_signals();
|
|
||||||
# ifdef AZTEC_C
|
# ifdef AZTEC_C
|
||||||
cmd = SCM_MAKINUM(Execute(SCM_ROCHARS(cmd), 0, 0));
|
cmd = SCM_MAKINUM(Execute(SCM_ROCHARS(cmd), 0, 0));
|
||||||
# else
|
# else
|
||||||
cmd = SCM_MAKINUM(0L+system(SCM_ROCHARS(cmd)));
|
cmd = SCM_MAKINUM(0L+system(SCM_ROCHARS(cmd)));
|
||||||
# endif
|
# endif
|
||||||
scm_unignore_signals();
|
|
||||||
return cmd;
|
return cmd;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue