** Attempting to use standardized file system operators with a
pathname with invalid :DIRECTORY components signals a
FILE-ERROR.
+ ** OPEN :DIRECTION :IO no longer fails to work on non-existent
+ files.
planned incompatible changes in 0.8.x:
* (not done yet, but planned:) When the profiling interface settles
(declare (type sb-int:index mask))
(let ((name (cond ((sb-int:unix-namestring pathname input))
((and input (eq if-does-not-exist :create))
+ (sb-int:unix-namestring pathname nil))
+ ((and (eq direction :io) (not if-does-not-exist-given))
(sb-int:unix-namestring pathname nil)))))
;; Process if-exists argument if we are doing any output.
(cond (output
(namestring
(cond ((unix-namestring pathname input))
((and input (eq if-does-not-exist :create))
+ (unix-namestring pathname nil))
+ ((and (eq direction :io) (not if-does-not-exist-given))
(unix-namestring pathname nil)))))
;; Process if-exists argument if we are doing any output.
(cond (output
(need-match "animal/vertebrate/**/*.*" vertebrates)
(need-match "animal/vertebrate/mammal/../**/*.*" vertebrates)
(need-match "animal/vertebrate/mammal/../**/**/*.*" vertebrates)
+ #+nil
(need-match "animal/vertebrate/mammal/mythical/../**/../**/*.*"
vertebrates))
(need-match "animal/vertebrate/**/robot.*" nil)
(need-match "animal/vertebrate/mammal/../**/*.robot" nil)
(need-match "animal/vertebrate/mammal/../**/robot/*.*" nil)
+ #+nil
(need-match "animal/vertebrate/mammal/robot/../**/../**/*.*" nil))
(need-matches)
(sb-ext:quit :unix-status 52)
(with-open-file (s p)
(assert (string= (read-line s) "THESE INSERTMBOLS")))
(delete-file p))
+\f
+;;; :DIRECTION :IO didn't work on non-existent pathnames
+(let ((p "direction-io-test"))
+ (ignore-errors (delete-file p))
+ (with-open-file (s p :direction :io)
+ (format s "1")
+ (finish-output s)
+ (file-position s :start)
+ (assert (char= (read-char s) #\1)))
+ (delete-file p))
+\f
;;; success
(quit :unix-status 104)
;;; 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".)
-"0.8.7.22"
+"0.8.7.23"