infix: Remove redundant progn in loop expander
[lisp] / sys-base.lisp
CommitLineData
861345b4 1;;; -*-lisp-*-
2;;;
3;;; $Id$
4;;;
5;;; Basic system-specific stuff
6;;;
7;;; (c) 2005 Mark Wooding
8;;;
9
10;;;----- Licensing notice ---------------------------------------------------
11;;;
12;;; This program is free software; you can redistribute it and/or modify
13;;; it under the terms of the GNU General Public License as published by
14;;; the Free Software Foundation; either version 2 of the License, or
15;;; (at your option) any later version.
16;;;
17;;; This program is distributed in the hope that it will be useful,
18;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
19;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20;;; GNU General Public License for more details.
21;;;
22;;; You should have received a copy of the GNU General Public License
23;;; along with this program; if not, write to the Free Software Foundation,
24;;; Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
25
26(defpackage #:mdw.runlisp
27 (:use #:common-lisp #:extensions)
28 (:export #:*lisp-interpreter* #:*command-line-strings*))
29(defpackage #:mdw.sys-base
30 (:use #:common-lisp #:extensions #:mdw.runlisp)
31 (:export #:exit #:hard-exit #:*program-name* #:*command-line-strings*))
32(in-package #:mdw.sys-base)
33
34;;; --- This is currently all a bit CMUCL-specific ---
35
36#+cmu
37(defun exit (&optional (code 0))
38 "Polite way to end a program. If running in an interactive Lisp, just
0ff9df03 39 return to the top-level REPL."
861345b4 40 (if *batch-mode*
41 (throw 'lisp::%end-of-the-world code)
42 (progn
43 (unless (zerop code)
44 (format t "~&Exiting unsuccessfully with code ~D.~%" code))
45 (abort))))
46
47#+cmu
c59bde66 48(defun hard-exit (&optional (code 0))
861345b4 49 "Stops the program immediately in its tracks. Does nothing else. Use
0ff9df03 50 after fork, for example, to avoid flushing buffers."
c59bde66 51 (declare (type (unsigned-byte 32) code))
861345b4 52 (unix::void-syscall ("_exit" c-call:int) code))
53
54#+cmu
55(defvar *program-name* (pathname-name (car *command-line-strings*))
56 "A plausible guess at the program's name, stripped of strange extensions.")
57
58;;;----- That's all, folks --------------------------------------------------