anchor.diff:  (defpackage "COM.INFORMATIMAGO.SIGNAL"
     (:use "COMMON-LISP")
     (:export
  -   "SIGNAL-HANDLER-BIND" "CATCHING-SIGNALS"
  +   "USER-INTERRUPT"
  +   "YIELD-SIGNALS" "SIGNAL-HANDLER-BIND" "CATCHING-SIGNALS"
      "+SIGHUP+" "+SIGINT+" "+SIGQUIT+" "+SIGILL+" "+SIGTRAP+"
      "+SIGABRT+" "+SIGBUS+" "+SIGFPE+" "+SIGKILL+" "+SIGUSR1+"
      "+SIGSEGV+" "+SIGUSR2+" "+SIGPIPE+" "+SIGALRM+" "+SIGTERM+"
  
positive.code: ;;;;AUTHORS
  ;;;;    <PJB> Pascal J. Bourguignon <pjb@informatimago.com>
  ;;;;MODIFICATIONS
  ;;;;    2012-02-01 <PJB> Created.
  ;;;;BUGS
  ;;;;LEGAL
  
negative.code:   (defconstant +SIGSYS+    31))
  
  
  (define-condition user-interrupt (condition)
    ((signal :initarg :signal
             :initform 0
             :reader user-interrupt-signal))
    (:report (lambda (condition stream)
               (format stream "~S signal ~D"
                       'user-interrupt
                       (user-interrupt-signal condition)))))
  
  
  (defun yield-signals (signals)
    #+ccl
    (dolist (signum signals)
      (when (ccl:wait-for-signal signum 0)
        (signal 'user-interrupt :signal signum))))
  
  
  (defmacro signal-handler-bind (bindings &body body)
    "
  BINDINGS: is a list of lists of a signal number (evaluated, so you can
  