-;;;; miscellaneous support utilities
-
-;;; Signalling an error when trying to print an error condition is
-;;; generally a PITA, so whatever the failure encountered when
-;;; wondering about FILE-POSITION within a condition printer, 'tis
-;;; better silently to give up than to try to complain.
-(defun file-position-or-nil-for-error (stream &optional (pos nil posp))
- ;; Arguably FILE-POSITION shouldn't be signalling errors at all; but
- ;; "NIL if this cannot be determined" in the ANSI spec doesn't seem
- ;; absolutely unambiguously to prohibit errors when, e.g., STREAM
- ;; has been closed so that FILE-POSITION is a nonsense question. So
- ;; my (WHN) impression is that the conservative approach is to
- ;; IGNORE-ERRORS. (I encountered this failure from within a homebrew
- ;; defsystemish operation where the ERROR-STREAM had been CL:CLOSEd,
- ;; I think by nonlocally exiting through a WITH-OPEN-FILE, by the
- ;; time an error was reported.)
- (if posp
- (ignore-errors (file-position stream pos))
- (ignore-errors (file-position stream))))
-\f