File: script-support.lisp

package info (click to toggle)
cl-asdf 1.111-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 428 kB
  • ctags: 189
  • sloc: lisp: 1,395; sh: 128; makefile: 41
file content (36 lines) | stat: -rw-r--r-- 913 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
(in-package #:common-lisp-user)

#+allegro
(setf excl:*warn-on-nested-reader-conditionals* nil)

;;; code adapted from cl-launch (any errors in transcription are mine!)
;; http://www.cliki.net/cl-launch
(defun leave-lisp (message return)
  (when message
    (format *error-output* message))
  #+allegro
  (excl:exit return)
  #+clisp
  (ext:quit return)
  #+(or cmu scl)
  (unix:unix-exit code)
  #+ecl 
  (si:quit return)
  #+gcl
  (lisp:quit code)
  #+lispworks
  (lispworks:quit :status code :confirm nil :return nil :ignore-errors-p t)
  #+(or openmcl mcl)
  (ccl::quit return)
  #+sbcl
  (sb-ext:quit :unix-status return)

  (error "Don't know how to quit Lisp; wanting to use exit code ~a" return))

(defmacro exit-on-error (&body body)
  `(handler-case 
      (progn ,@body
	     (leave-lisp "Script succeeded" 0))
    (error (c)
      (format *error-output* "~a" c)
      (leave-lisp "Script failed" 1))))