mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-04-30 11:50:28 +02:00
merge from 1.8
This commit is contained in:
parent
2039f7be7d
commit
9a18d8d431
10 changed files with 207 additions and 51 deletions
|
@ -1,3 +1,32 @@
|
||||||
|
2007-01-16 Kevin Ryde <user42@zip.com.au>
|
||||||
|
|
||||||
|
* api-data.texi (Mapping Folding and Unfolding): In string-unfold,
|
||||||
|
ssay make_final default is nothing extra. The `(lambda (x) )' shown
|
||||||
|
was not quite right, it would have been `(lambda (x) "")' if anything.
|
||||||
|
|
||||||
|
* api-init.texi (Initialization): Cross reference Runtime Environment
|
||||||
|
for scm_set_program_arguments.
|
||||||
|
|
||||||
|
* posix.texi (Runtime Environment): Expand program-arguments
|
||||||
|
description, add set-program-arguments, add scm_set_program_arguments,
|
||||||
|
note args are per-thread.
|
||||||
|
|
||||||
|
2006-12-14 Kevin Ryde <user42@zip.com.au>
|
||||||
|
|
||||||
|
* api-procedures.texi (let-keywords Reference): Expand variously to
|
||||||
|
make it clear what's actually taken and done. Shortfalls reported by
|
||||||
|
Han-Wen Nienhuys.
|
||||||
|
|
||||||
|
2006-12-13 Kevin Ryde <user42@zip.com.au>
|
||||||
|
|
||||||
|
* api-control.texi (Handling Errors): Cross reference "Error
|
||||||
|
Reporting" for `scm-error', not just "above".
|
||||||
|
|
||||||
|
* posix.texi (Encryption): Cross reference crypt in the glibc manual.
|
||||||
|
Clarify that key and salt are strings.
|
||||||
|
|
||||||
|
* srfi-modules.texi (SRFI-17): Expand variously.
|
||||||
|
|
||||||
2006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
|
2006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr>
|
||||||
|
|
||||||
* Makefile.am (BUILT_SOURCES): New variable.
|
* Makefile.am (BUILT_SOURCES): New variable.
|
||||||
|
|
|
@ -1476,7 +1476,7 @@ In the following C functions, @var{SUBR} and @var{MESSAGE} parameters
|
||||||
can be @code{NULL} to give the effect of @code{#f} described above.
|
can be @code{NULL} to give the effect of @code{#f} described above.
|
||||||
|
|
||||||
@deftypefn {C Function} SCM scm_error (SCM @var{key}, char *@var{subr}, char *@var{message}, SCM @var{args}, SCM @var{rest})
|
@deftypefn {C Function} SCM scm_error (SCM @var{key}, char *@var{subr}, char *@var{message}, SCM @var{args}, SCM @var{rest})
|
||||||
Throw an error, as per @code{scm-error} above.
|
Throw an error, as per @code{scm-error} (@pxref{Error Reporting}).
|
||||||
@end deftypefn
|
@end deftypefn
|
||||||
|
|
||||||
@deftypefn {C Function} void scm_syserror (char *@var{subr})
|
@deftypefn {C Function} void scm_syserror (char *@var{subr})
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
@c -*-texinfo-*-
|
@c -*-texinfo-*-
|
||||||
@c This is part of the GNU Guile Reference Manual.
|
@c This is part of the GNU Guile Reference Manual.
|
||||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006
|
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006, 2007
|
||||||
@c Free Software Foundation, Inc.
|
@c Free Software Foundation, Inc.
|
||||||
@c See the file guile.texi for copying conditions.
|
@c See the file guile.texi for copying conditions.
|
||||||
|
|
||||||
|
@ -3525,7 +3525,7 @@ string.
|
||||||
@item @var{make_final} is applied to the terminal seed
|
@item @var{make_final} is applied to the terminal seed
|
||||||
value (on which @var{p} returns true) to produce
|
value (on which @var{p} returns true) to produce
|
||||||
the final/rightmost portion of the constructed string.
|
the final/rightmost portion of the constructed string.
|
||||||
It defaults to @code{(lambda (x) )}.
|
The default is nothing extra.
|
||||||
@end itemize
|
@end itemize
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
@c -*-texinfo-*-
|
@c -*-texinfo-*-
|
||||||
@c This is part of the GNU Guile Reference Manual.
|
@c This is part of the GNU Guile Reference Manual.
|
||||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004
|
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2007
|
||||||
@c Free Software Foundation, Inc.
|
@c Free Software Foundation, Inc.
|
||||||
@c See the file guile.texi for copying conditions.
|
@c See the file guile.texi for copying conditions.
|
||||||
|
|
||||||
|
|
||||||
@node Initialization
|
@node Initialization
|
||||||
@section Initializing Guile
|
@section Initializing Guile
|
||||||
|
@cindex Initializing Guile
|
||||||
|
|
||||||
Each thread that wants to use functions from the Guile API needs to
|
Each thread that wants to use functions from the Guile API needs to
|
||||||
put itself into guile mode with either @code{scm_with_guile} or
|
put itself into guile mode with either @code{scm_with_guile} or
|
||||||
|
@ -93,7 +94,8 @@ The function @code{scm_boot_guile} arranges for the Scheme
|
||||||
@code{command-line} function to return the strings given by @var{argc}
|
@code{command-line} function to return the strings given by @var{argc}
|
||||||
and @var{argv}. If @var{main_func} modifies @var{argc} or @var{argv},
|
and @var{argv}. If @var{main_func} modifies @var{argc} or @var{argv},
|
||||||
it should call @code{scm_set_program_arguments} with the final list, so
|
it should call @code{scm_set_program_arguments} with the final list, so
|
||||||
Scheme code will know which arguments have been processed.
|
Scheme code will know which arguments have been processed
|
||||||
|
(@pxref{Runtime Environment}).
|
||||||
@end deftypefn
|
@end deftypefn
|
||||||
|
|
||||||
@deftypefn {C Function} void scm_shell (int @var{argc}, char **@var{argv})
|
@deftypefn {C Function} void scm_shell (int @var{argc}, char **@var{argv})
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
@c -*-texinfo-*-
|
@c -*-texinfo-*-
|
||||||
@c This is part of the GNU Guile Reference Manual.
|
@c This is part of the GNU Guile Reference Manual.
|
||||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006
|
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006, 2007
|
||||||
@c Free Software Foundation, Inc.
|
@c Free Software Foundation, Inc.
|
||||||
@c See the file guile.texi for copying conditions.
|
@c See the file guile.texi for copying conditions.
|
||||||
|
|
||||||
|
@ -1348,15 +1348,72 @@ included but subprocesses are not.
|
||||||
|
|
||||||
@deffn {Scheme Procedure} program-arguments
|
@deffn {Scheme Procedure} program-arguments
|
||||||
@deffnx {Scheme Procedure} command-line
|
@deffnx {Scheme Procedure} command-line
|
||||||
|
@deffnx {Scheme Procedure} set-program-arguments
|
||||||
@deffnx {C Function} scm_program_arguments ()
|
@deffnx {C Function} scm_program_arguments ()
|
||||||
|
@deffnx {C Function} scm_set_program_arguments_scm (lst)
|
||||||
@cindex command line
|
@cindex command line
|
||||||
@cindex program arguments
|
@cindex program arguments
|
||||||
Return the list of command line arguments passed to Guile, as a list of
|
Get the command line arguments passed to Guile, or set new arguments.
|
||||||
strings. The list includes the invoked program name, which is usually
|
|
||||||
@code{"guile"}, but excludes switches and parameters for command line
|
The arguments are a list of strings, the first of which is the invoked
|
||||||
options like @code{-e} and @code{-l}.
|
program name. This is just @nicode{"guile"} (or the executable path)
|
||||||
|
when run interactively, or it's the script name when running a script
|
||||||
|
with @option{-s} (@pxref{Invoking Guile}).
|
||||||
|
|
||||||
|
@example
|
||||||
|
guile -L /my/extra/dir -s foo.scm abc def
|
||||||
|
|
||||||
|
(program-arguments) @result{} ("foo.scm" "abc" "def")
|
||||||
|
@end example
|
||||||
|
|
||||||
|
@code{set-program-arguments} allows a library module or similar to
|
||||||
|
modify the arguments, for example to strip options it recognises,
|
||||||
|
leaving the rest for the mainline.
|
||||||
|
|
||||||
|
The argument list is held in a fluid, which means it's separate for
|
||||||
|
each thread. Neither the list nor the strings within it are copied at
|
||||||
|
any point and normally should not be mutated.
|
||||||
|
|
||||||
|
The two names @code{program-arguments} and @code{command-line} are an
|
||||||
|
historical accident, they both do exactly the same thing. The name
|
||||||
|
@code{scm_set_program_arguments_scm} has an extra @code{_scm} on the
|
||||||
|
end to avoid clashing with the C function below.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
|
@deftypefn {C Function} void scm_set_program_arguments (int argc, char **argv, char *first)
|
||||||
|
@cindex command line
|
||||||
|
@cindex program arguments
|
||||||
|
Set the list of command line arguments for @code{program-arguments}
|
||||||
|
and @code{command-line} above.
|
||||||
|
|
||||||
|
@var{argv} is an array of null-terminated strings, as in a C
|
||||||
|
@code{main} function. @var{argc} is the number of strings in
|
||||||
|
@var{argv}, or if it's negative then a @code{NULL} entry in @var{argv}
|
||||||
|
marks its end.
|
||||||
|
|
||||||
|
@var{first} is an extra string put at the start of the arguments, or
|
||||||
|
@code{NULL} for no such extra. This is a convenient way to pass the
|
||||||
|
program name after advancing @var{argv} to strip option arguments.
|
||||||
|
|
||||||
|
@example
|
||||||
|
@{
|
||||||
|
char *progname = argv[0];
|
||||||
|
int i;
|
||||||
|
for (argv++; argv[0] != NULL && argv[0][0] == '-'; argv++)
|
||||||
|
@{
|
||||||
|
/* munch option ... */
|
||||||
|
@}
|
||||||
|
/* remaining args for scheme level use */
|
||||||
|
scm_set_program_arguments (-1, argv, progname);
|
||||||
|
@}
|
||||||
|
@end example
|
||||||
|
|
||||||
|
This sort of thing is often done at startup under
|
||||||
|
@code{scm_boot_guile} with any options handled at the C level removed.
|
||||||
|
The given strings are all copied, so the C data is not accessed again
|
||||||
|
once @code{scm_set_program_arguments} returns.
|
||||||
|
@end deftypefn
|
||||||
|
|
||||||
@deffn {Scheme Procedure} getenv nam
|
@deffn {Scheme Procedure} getenv nam
|
||||||
@deffnx {C Function} scm_getenv (nam)
|
@deffnx {C Function} scm_getenv (nam)
|
||||||
@cindex environment
|
@cindex environment
|
||||||
|
@ -3174,12 +3231,13 @@ Please note that the procedures in this section are not suited for
|
||||||
strong encryption, they are only interfaces to the well-known and
|
strong encryption, they are only interfaces to the well-known and
|
||||||
common system library functions of the same name. They are just as good
|
common system library functions of the same name. They are just as good
|
||||||
(or bad) as the underlying functions, so you should refer to your system
|
(or bad) as the underlying functions, so you should refer to your system
|
||||||
documentation before using them.
|
documentation before using them (@pxref{crypt,, Encrypting Passwords,
|
||||||
|
libc, The GNU C Library Reference Manual}).
|
||||||
|
|
||||||
@deffn {Scheme Procedure} crypt key salt
|
@deffn {Scheme Procedure} crypt key salt
|
||||||
@deffnx {C Function} scm_crypt (key, salt)
|
@deffnx {C Function} scm_crypt (key, salt)
|
||||||
Encrypt @var{key} using @var{salt} as the salt value to the
|
Encrypt @var{key}, with the addition of @var{salt} (both strings),
|
||||||
crypt(3) library call.
|
using the @code{crypt} C library call.
|
||||||
@end deffn
|
@end deffn
|
||||||
|
|
||||||
Although @code{getpass} is not an encryption procedure per se, it
|
Although @code{getpass} is not an encryption procedure per se, it
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
@c -*-texinfo-*-
|
@c -*-texinfo-*-
|
||||||
@c This is part of the GNU Guile Reference Manual.
|
@c This is part of the GNU Guile Reference Manual.
|
||||||
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004
|
@c Copyright (C) 1996, 1997, 2000, 2001, 2002, 2003, 2004, 2006, 2007
|
||||||
@c Free Software Foundation, Inc.
|
@c Free Software Foundation, Inc.
|
||||||
@c See the file guile.texi for copying conditions.
|
@c See the file guile.texi for copying conditions.
|
||||||
|
|
||||||
|
@ -1616,24 +1616,61 @@ applied to zero arguments, yields 1.
|
||||||
@subsection SRFI-17 - Generalized set!
|
@subsection SRFI-17 - Generalized set!
|
||||||
@cindex SRFI-17
|
@cindex SRFI-17
|
||||||
|
|
||||||
This is an implementation of SRFI-17: Generalized set!
|
This SRFI implements a generalized @code{set!}, allowing some
|
||||||
|
``referencing'' functions to be used as the target location of a
|
||||||
|
@code{set!}. This feature is available from
|
||||||
|
|
||||||
@findex getter-with-setter
|
@example
|
||||||
It exports the Guile procedure @code{make-procedure-with-setter} under
|
(use-modules (srfi srfi-17))
|
||||||
the SRFI name @code{getter-with-setter} and exports the standard
|
@end example
|
||||||
procedures @code{car}, @code{cdr}, @dots{}, @code{cdddr},
|
|
||||||
@code{string-ref} and @code{vector-ref} as procedures with setters, as
|
|
||||||
required by the SRFI.
|
|
||||||
|
|
||||||
SRFI-17 was heavily criticized during its discussion period but it was
|
@noindent
|
||||||
finalized anyway. One issue was its concept of globally associating
|
For example @code{vector-ref} is extended so that
|
||||||
setter @dfn{properties} with (procedure) values, which is non-Schemy.
|
|
||||||
For this reason, this implementation chooses not to provide a way to set
|
@example
|
||||||
the setter of a procedure. In fact, @code{(set! (setter @var{proc})
|
(set! (vector-ref vec idx) new-value)
|
||||||
@var{setter})} signals an error. The only way to attach a setter to a
|
@end example
|
||||||
procedure is to create a new object (a @dfn{procedure with setter}) via
|
|
||||||
the @code{getter-with-setter} procedure. This procedure is also
|
@noindent
|
||||||
specified in the SRFI. Using it avoids the described problems.
|
is equivalent to
|
||||||
|
|
||||||
|
@example
|
||||||
|
(vector-set! vec idx new-value)
|
||||||
|
@end example
|
||||||
|
|
||||||
|
The idea is that a @code{vector-ref} expression identifies a location,
|
||||||
|
which may be either fetched or stored. The same form is used for the
|
||||||
|
location in both cases, encouraging visual clarity. This is similar
|
||||||
|
to the idea of an ``lvalue'' in C.
|
||||||
|
|
||||||
|
The mechanism for this kind of @code{set!} is in the Guile core
|
||||||
|
(@pxref{Procedures with Setters}). This module adds definitions of
|
||||||
|
the following functions as procedures with setters, allowing them to
|
||||||
|
be targets of a @code{set!},
|
||||||
|
|
||||||
|
@quotation
|
||||||
|
@nicode{car}, @nicode{cdr}, @nicode{caar}, @nicode{cadr},
|
||||||
|
@nicode{cdar}, @nicode{cddr}, @nicode{caaar}, @nicode{caadr},
|
||||||
|
@nicode{cadar}, @nicode{caddr}, @nicode{cdaar}, @nicode{cdadr},
|
||||||
|
@nicode{cddar}, @nicode{cdddr}, @nicode{caaaar}, @nicode{caaadr},
|
||||||
|
@nicode{caadar}, @nicode{caaddr}, @nicode{cadaar}, @nicode{cadadr},
|
||||||
|
@nicode{caddar}, @nicode{cadddr}, @nicode{cdaaar}, @nicode{cdaadr},
|
||||||
|
@nicode{cdadar}, @nicode{cdaddr}, @nicode{cddaar}, @nicode{cddadr},
|
||||||
|
@nicode{cdddar}, @nicode{cddddr}
|
||||||
|
|
||||||
|
@nicode{string-ref}, @nicode{vector-ref}
|
||||||
|
@end quotation
|
||||||
|
|
||||||
|
The SRFI specifies @code{setter} (@pxref{Procedures with Setters}) as
|
||||||
|
a procedure with setter, allowing the setter for a procedure to be
|
||||||
|
changed, eg.@: @code{(set! (setter foo) my-new-setter-handler)}.
|
||||||
|
Currently Guile does not implement this, a setter can only be
|
||||||
|
specified on creation (@code{getter-with-setter} below).
|
||||||
|
|
||||||
|
@defun getter-with-setter
|
||||||
|
The same as the Guile core @code{make-procedure-with-setter}
|
||||||
|
(@pxref{Procedures with Setters}).
|
||||||
|
@end defun
|
||||||
|
|
||||||
|
|
||||||
@node SRFI-19
|
@node SRFI-19
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2007-01-04 Kevin Ryde <user42@zip.com.au>
|
||||||
|
|
||||||
|
* Makefile.am (guile-config): Use "|" as the sed delimiter, for the
|
||||||
|
benefit of DOS systems where $(bindir) might include a drive letter
|
||||||
|
like "c:".
|
||||||
|
|
||||||
2006-09-19 Rob Browning <rlb@defaultvalue.org>
|
2006-09-19 Rob Browning <rlb@defaultvalue.org>
|
||||||
|
|
||||||
* guile-config.in (build-link): Restore the removal of "/usr/lib"
|
* guile-config.in (build-link): Restore the removal of "/usr/lib"
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
## Process this file with Automake to create Makefile.in
|
## Process this file with Automake to create Makefile.in
|
||||||
## Jim Blandy <jimb@red-bean.com> --- September 1997
|
## Jim Blandy <jimb@red-bean.com> --- September 1997
|
||||||
##
|
##
|
||||||
## Copyright (C) 1998, 1999, 2001, 2006 Free Software Foundation, Inc.
|
## Copyright (C) 1998, 1999, 2001, 2006, 2007 Free Software Foundation, Inc.
|
||||||
##
|
##
|
||||||
## This file is part of GUILE.
|
## This file is part of GUILE.
|
||||||
##
|
##
|
||||||
|
@ -35,7 +35,7 @@ aclocal_DATA = guile.m4
|
||||||
guile-config: guile-config.in ${top_builddir}/libguile/libpath.h
|
guile-config: guile-config.in ${top_builddir}/libguile/libpath.h
|
||||||
rm -f guile-config.tmp
|
rm -f guile-config.tmp
|
||||||
sed < ${srcdir}/guile-config.in > guile-config.tmp \
|
sed < ${srcdir}/guile-config.in > guile-config.tmp \
|
||||||
-e s:@-bindir-@:${bindir}: \
|
-e 's|@-bindir-@|${bindir}|' \
|
||||||
-e s:@-GUILE_VERSION-@:${GUILE_VERSION}:
|
-e s:@-GUILE_VERSION-@:${GUILE_VERSION}:
|
||||||
chmod +x guile-config.tmp
|
chmod +x guile-config.tmp
|
||||||
mv guile-config.tmp guile-config
|
mv guile-config.tmp guile-config
|
||||||
|
|
|
@ -1,3 +1,21 @@
|
||||||
|
2007-01-04 Kevin Ryde <user42@zip.com.au>
|
||||||
|
|
||||||
|
* boot-9.scm (top-repl): Check (defined? 'SIGBUS) before using that
|
||||||
|
value, there's no such signal on mingw. Reported by Cesar Strauss.
|
||||||
|
|
||||||
|
2006-12-13 Kevin Ryde <user42@zip.com.au>
|
||||||
|
|
||||||
|
* boot-9.scm (use-srfis, top-repl): Use process-use-modules, to
|
||||||
|
correctly handle duplicates between the core and other modules, in
|
||||||
|
particular srfi-17 which should replace `car' etc (but didn't).
|
||||||
|
|
||||||
|
2006-12-09 Kevin Ryde <user42@zip.com.au>
|
||||||
|
|
||||||
|
* boot-9.scm (top-repl): Remove module-use! of the core `(guile)'
|
||||||
|
module. It's already in `(guile-user)' and the module-use! elevates
|
||||||
|
it making core bindings override those from elsewhere, such as `iota'
|
||||||
|
under a run of "guile --use-srfi=1". Reported by Sven Hartrumpf.
|
||||||
|
|
||||||
2006-11-13 Neil Jerram <neil@ossau.uklinux.net>
|
2006-11-13 Neil Jerram <neil@ossau.uklinux.net>
|
||||||
|
|
||||||
* boot-9.scm (environment-module): Change eval-closure-module call
|
* boot-9.scm (environment-module): Change eval-closure-module call
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
;;; installed-scm-file
|
;;; installed-scm-file
|
||||||
|
|
||||||
;;;; Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006
|
;;;; Copyright (C) 1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007
|
||||||
;;;; Free Software Foundation, Inc.
|
;;;; Free Software Foundation, Inc.
|
||||||
;;;;
|
;;;;
|
||||||
;;;; This library is free software; you can redistribute it and/or
|
;;;; This library is free software; you can redistribute it and/or
|
||||||
|
@ -3313,13 +3313,11 @@
|
||||||
;; numbers, which are the numbers of the SRFIs to be loaded on startup.
|
;; numbers, which are the numbers of the SRFIs to be loaded on startup.
|
||||||
;;
|
;;
|
||||||
(define (use-srfis srfis)
|
(define (use-srfis srfis)
|
||||||
(let lp ((s srfis))
|
(process-use-modules
|
||||||
(if (pair? s)
|
(map (lambda (num)
|
||||||
(let* ((srfi (string->symbol
|
(list (list 'srfi (string->symbol
|
||||||
(string-append "srfi-" (number->string (car s)))))
|
(string-append "srfi-" (number->string num))))))
|
||||||
(mod-i (resolve-interface (list 'srfi srfi))))
|
srfis)))
|
||||||
(module-use! (current-module) mod-i)
|
|
||||||
(lp (cdr s))))))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -3387,30 +3385,38 @@
|
||||||
|
|
||||||
;; Use some convenient modules (in reverse order)
|
;; Use some convenient modules (in reverse order)
|
||||||
|
|
||||||
(if (provided? 'regex)
|
(set-current-module guile-user-module)
|
||||||
(module-use! guile-user-module (resolve-interface '(ice-9 regex))))
|
(process-use-modules
|
||||||
(if (provided? 'threads)
|
(append
|
||||||
(module-use! guile-user-module (resolve-interface '(ice-9 threads))))
|
'(((ice-9 r5rs))
|
||||||
|
((ice-9 session))
|
||||||
|
((ice-9 debug)))
|
||||||
|
(if (provided? 'regex)
|
||||||
|
'(((ice-9 regex)))
|
||||||
|
'())
|
||||||
|
(if (provided? 'threads)
|
||||||
|
'(((ice-9 threads)))
|
||||||
|
'())))
|
||||||
;; load debugger on demand
|
;; load debugger on demand
|
||||||
(module-use! guile-user-module
|
(module-use! guile-user-module
|
||||||
(make-autoload-interface guile-user-module
|
(make-autoload-interface guile-user-module
|
||||||
'(ice-9 debugger) '(debug)))
|
'(ice-9 debugger) '(debug)))
|
||||||
(module-use! guile-user-module (resolve-interface '(ice-9 session)))
|
|
||||||
(module-use! guile-user-module (resolve-interface '(ice-9 debug)))
|
|
||||||
;; so that builtin bindings will be checked first
|
|
||||||
(module-use! guile-user-module (resolve-interface '(ice-9 r5rs)))
|
|
||||||
(module-use! guile-user-module (resolve-interface '(guile)))
|
|
||||||
|
|
||||||
(set-current-module guile-user-module)
|
|
||||||
|
|
||||||
|
;; Note: SIGFPE, SIGSEGV and SIGBUS are actually "query-only" (see
|
||||||
|
;; scmsigs.c scm_sigaction_for_thread), so the handlers setup here have
|
||||||
|
;; no effect.
|
||||||
(let ((old-handlers #f)
|
(let ((old-handlers #f)
|
||||||
(signals (if (provided? 'posix)
|
(signals (if (provided? 'posix)
|
||||||
`((,SIGINT . "User interrupt")
|
`((,SIGINT . "User interrupt")
|
||||||
(,SIGFPE . "Arithmetic error")
|
(,SIGFPE . "Arithmetic error")
|
||||||
(,SIGBUS . "Bad memory access (bus error)")
|
|
||||||
(,SIGSEGV
|
(,SIGSEGV
|
||||||
. "Bad memory access (Segmentation violation)"))
|
. "Bad memory access (Segmentation violation)"))
|
||||||
'())))
|
'())))
|
||||||
|
;; no SIGBUS on mingw
|
||||||
|
(if (defined? 'SIGBUS)
|
||||||
|
(set! signals (acons SIGBUS "Bad memory access (bus error)"
|
||||||
|
signals)))
|
||||||
|
|
||||||
(dynamic-wind
|
(dynamic-wind
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue