X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ffd-stream.lisp;h=853c3cd25b670c0478e5de0d3ed1933053cce114;hb=9fd95117be995b9e15a19aa182fafe4a489a4ac7;hp=9cbafafdb4f84e64f76def2780f7f1247621cdfd;hpb=031646c3b8236eb441434664e10fb88f8e7ec7be;p=sbcl.git diff --git a/src/code/fd-stream.lisp b/src/code/fd-stream.lisp index 9cbafaf..853c3cd 100644 --- a/src/code/fd-stream.lisp +++ b/src/code/fd-stream.lisp @@ -70,8 +70,8 @@ ;; ;; ...again, once we have smarted locks the spinlock here can become ;; a mutex. - `(sb!thread::call-with-system-spinlock (lambda () ,@body) - *available-buffers-spinlock*)) + `(sb!thread::with-system-spinlock (*available-buffers-spinlock*) + ,@body)) (defconstant +bytes-per-buffer+ (* 4 1024) #!+sb-doc @@ -185,6 +185,8 @@ ;; pathname of the file this stream is opened to (returned by PATHNAME) (pathname nil :type (or pathname null)) (external-format :default) + ;; fixed width, or function to call with a character + (char-size 1 :type (or fixnum function)) (output-bytes #'ill-out :type function)) (def!method print-object ((fd-stream fd-stream) stream) (declare (type stream stream)) @@ -2307,6 +2309,7 @@ :buffering buffering :dual-channel-p dual-channel-p :external-format external-format + :char-size (external-format-char-size external-format) :timeout (if timeout (coerce timeout 'single-float) @@ -2377,7 +2380,7 @@ ;; Calculate useful stuff. (multiple-value-bind (input output mask) - (case direction + (ecase direction (:input (values t nil sb!unix:o_rdonly)) (:output (values nil t sb!unix:o_wronly)) (:io (values t t sb!unix:o_rdwr))