From 118aab27966ff6d70477c7091c5f54888075c313 Mon Sep 17 00:00:00 2001 From: Richard M Kreuter Date: Wed, 26 Mar 2008 15:54:11 +0000 Subject: [PATCH] 1.0.15.39: Remove subclasses of sb-posix:syscall-error These were added in 1.0.14 (but never documented), and turn out to be impediments to some future progress on Windows. --- NEWS | 2 ++ contrib/sb-posix/interface.lisp | 71 +---------------------------------------- version.lisp-expr | 2 +- 3 files changed, 4 insertions(+), 71 deletions(-) diff --git a/NEWS b/NEWS index ccab6c509..28b6c4f39 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,7 @@ ;;;; -*- coding: utf-8; -*- changes in sbcl-1.0.16 relative to 1.0.15: + * minor incompatible change: revert the changes to sb-posix's error + signaling added in 1.0.14. * minor incompatible change: change PROBE-FILE back to returning NIL whenever we can't get a truename, as was the case before 1.0.14. * minor incompatible change: SB-BSD-SOCKETS:NAME-SERVICE-ERROR now diff --git a/contrib/sb-posix/interface.lisp b/contrib/sb-posix/interface.lisp index 2e2bde63d..110a4eab0 100644 --- a/contrib/sb-posix/interface.lisp +++ b/contrib/sb-posix/interface.lisp @@ -63,23 +63,8 @@ (format s "System call error ~A (~A)" errno (sb-int:strerror errno)))))) -(defvar *errno-table* - (let ((errno-max 0) - list) - (do-symbols (symbol (find-package "SB-POSIX")) - (when (get symbol 'errno) - (let ((errno (symbol-value symbol))) - (setf errno-max (max errno errno-max)) - (push (cons errno - (eval `(define-condition ,symbol (syscall-error) ()))) - list)))) - (let ((table (make-array (1+ errno-max)))) - (mapc #'(lambda (cons) (setf (elt table (car cons)) (cdr cons))) list) - table))) - (defun syscall-error () - (let ((errno (get-errno))) - (error (elt *errno-table* errno) :errno errno))) + (error 'sb-posix:syscall-error :errno (get-errno))) (defun unsupported-error (lisp-name c-name) (error "~S is unsupported by SBCL on this platform due to lack of ~A()." @@ -89,60 +74,6 @@ (warn "~S is unsupported by SBCL on this platform due to lack of ~A()." lisp-name c-name)) -;; Note that we inherit from SIMPLE-FILE-ERROR first, to get its -;; error reporting, rather than SYSCALL-ERROR's. -(define-condition file-syscall-error - (sb-impl::simple-file-error syscall-error) - ()) - -(defvar *file-errno-table* - (let ((array (copy-seq *errno-table*))) - (map-into array - (lambda (condition-class-name) - (if (symbolp condition-class-name) - (let ((file-condition-name - (read-from-string - (format nil "FILE-~A" condition-class-name)))) - ;; Should condition class names like FILE-ENOENT - ;; and FILE-ENOTDIR be exported? I want to say - ;; "no", since we already export ENOENT, ENOTDIR - ;; et al, and so the user can write handlers - ;; such as - ;; - ;; (handler-bind ((sb-posix:enoent ...) - ;; (sb-posix:enotdir ...) - ;; (file-error ...)) - ;; ...) - ;; - ;; which will do the right thing for all our - ;; FILE-SYSCALL-ERRORs, without exposing this - ;; implementation detail. (Recall that some - ;; FILE-ERRORs don't strictly have to do with - ;; the file system, e.g., supplying a wild - ;; pathname to some functions.) But if the - ;; prevailing opinion is otherwise, uncomment - ;; the following. - #| (export file-condition-name) |# - (eval `(define-condition ,file-condition-name - (,condition-class-name file-syscall-error) - ()))) - condition-class-name)) - array) - array)) - -;; Note: do we have to declare SIMPLE-FILE-PERROR notinline in -;; fd-stream.lisp? -(sb-ext:without-package-locks - (defun sb-impl::simple-file-perror (note-format pathname errno) - (error (elt *file-errno-table* errno) - :pathname pathname - :errno errno - :format-control "~@<~?: ~2I~_~A~:>" - :format-arguments - (list note-format (list pathname) (sb-int:strerror errno))))) - -;; Note: it might prove convenient to develop a parallel set of -;; condition classes for STREAM-ERRORs, too. (declaim (inline never-fails)) (defun never-fails (&rest args) (declare (ignore args)) diff --git a/version.lisp-expr b/version.lisp-expr index d724ac790..b3a5c5a1f 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"1.0.15.38" +"1.0.15.39" -- 2.11.4.GIT