\f
;;;; miscellaneous external functions
-(defun sleep (n)
+(defun sleep (seconds)
#!+sb-doc
- "This function causes execution to be suspended for N seconds. N may
- be any non-negative, non-complex number."
- (when (or (not (realp n))
- (minusp n))
+ "This function causes execution to be suspended for SECONDS. SECONDS may be
+any non-negative real number."
+ (when (or (not (realp seconds))
+ (minusp seconds))
(error 'simple-type-error
:format-control "invalid argument to SLEEP: ~S"
- :format-arguments (list n)
- :datum n
+ :format-arguments (list seconds)
+ :datum seconds
:expected-type '(real 0)))
#!-win32
(multiple-value-bind (sec nsec)
- (if (integerp n)
- (values n 0)
+ (if (integerp seconds)
+ (values seconds 0)
(multiple-value-bind (sec frac)
- (truncate n)
+ (truncate seconds)
(values sec (truncate frac 1e-9))))
+ ;; nanosleep() accepts time_t as the first argument, but on some platforms
+ ;; it is restricted to 100 million seconds. Maybe someone can actually
+ ;; have a reason to sleep for over 3 years?
+ (loop while (> sec (expt 10 8))
+ do (decf sec (expt 10 8))
+ (sb!unix:nanosleep (expt 10 8) 0))
(sb!unix:nanosleep sec nsec))
#!+win32
- (sb!win32:millisleep (truncate (* n 1000)))
+ (sb!win32:millisleep (truncate (* seconds 1000)))
nil)
\f
;;;; the default toplevel function
(handling-end-of-the-world
(with-open-file (f pathname :element-type :default)
(sb!fasl::maybe-skip-shebang-line f)
- (load f :verbose nil :print nil)
+ ;; Scripts don't need to be stylish or fast, but silence is usually a
+ ;; desirable quality...
+ (handler-bind (((or style-warning compiler-note) #'muffle-warning))
+ (load f :verbose nil :print nil))
(quit)))))
;; Errors while processing the command line cause the system to QUIT,