diff --git a/level-1/l1-error-signal.lisp b/level-1/l1-error-signal.lisp index 18b2cd78..8b0705aa 100644 --- a/level-1/l1-error-signal.lisp +++ b/level-1/l1-error-signal.lisp @@ -45,7 +45,7 @@ (format-string (if errargs (format nil "~a : ~a" error-string "~s") error-string))) - (%err-disp-common nil err-type format-string errargs frame-ptr))) + (%err-disp-common errno err-type format-string errargs frame-ptr))) (defun %err-disp-internal (err-num errargs frame-ptr) @@ -87,7 +87,8 @@ (simple-file-error (make-condition condition-name :pathname (car errargs) :error-type format-string - :format-arguments (cdr errargs))) + :format-arguments (cdr errargs) + :errno err-num)) (undefined-function (make-condition condition-name :name (car errargs))) (call-special-operator-or-macro diff --git a/level-1/l1-error-system.lisp b/level-1/l1-error-system.lisp index e1aad9cc..796188a0 100644 --- a/level-1/l1-error-system.lisp +++ b/level-1/l1-error-system.lisp @@ -580,7 +580,11 @@ (file-error-pathname c))))) (define-condition simple-file-error (simple-condition file-error) - () + ((errno + :type (or integer null) + :initarg :errno + :initform nil + :reader simple-file-error-errno)) (:report (lambda (c s) (apply #'format s (slot-value c 'error-type) (file-error-pathname c)