Changeset 14580 for trunk/source/level-1


Ignore:
Timestamp:
Jan 13, 2011, 6:08:40 PM (9 years ago)
Author:
rme
Message:

Push things around a bit in OPTIMAL-BUFFER-SIZE in order to clarify
the code and correct a compiler warning about "undeclared free
variable NOMINAL" on Windows.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/level-1/l1-streams.lisp

    r14522 r14580  
    33353335    (:unicode . :unicode)))
    33363336
    3337 
    33383337(defun optimal-buffer-size (fd element-type)
    33393338  #+windows-target (declare (ignore fd))
    3340   (let* (#-windows-target (nominal (or (nth-value 6 (%fstat fd)) *elements-per-buffer*))
    3341          (octets #+windows-target #$BUFSIZ
    3342                  #-windows-target
    3343                  (case (%unix-fd-kind fd)
    3344                    (:pipe (#_fpathconf fd #$_PC_PIPE_BUF))
    3345                    (:socket
    3346                     #+linux-target nominal
    3347                     #-linux-target
    3348                     (int-getsockopt fd #$SOL_SOCKET
    3349                                     #+solaris-target #$SO_SNDBUF
    3350                                     #-solaris-target #$SO_SNDLOWAT))
    3351                    ((:character-special :tty) (#_fpathconf fd #$_PC_MAX_INPUT))
    3352                    (t nominal))))
    3353     (when (<= octets 0) (setq octets nominal))
    3354     (case (subtag-bytes (element-type-subtype element-type) 1)
    3355       (1 octets)
    3356       (2 (ash octets -1))
    3357       (4 (ash octets -2))
    3358       (8 (ash octets -3)))))
    3359 
    3360 
    3361 
    3362 
     3339  (flet ((scale-buffer-size (octets)
     3340           (case (subtag-bytes (element-type-subtype element-type) 1)
     3341             (1 octets)
     3342             (2 (ash octets -1))
     3343             (4 (ash octets -2))
     3344             (8 (ash octets -3)))))
     3345    #+windows-target
     3346    (let ((octets #$BUFSIZ))
     3347      (scale-buffer-size octets))
     3348    #-windows-target
     3349    (let* ((nominal (or (nth-value 6 (%fstat fd)) *elements-per-buffer*))
     3350           (octets (case (%unix-fd-kind fd)
     3351                     (:pipe (#_fpathconf fd #$_PC_PIPE_BUF))
     3352                     (:socket
     3353                      #+linux-target nominal
     3354                      #-linux-target
     3355                      (int-getsockopt fd #$SOL_SOCKET
     3356                                      #+solaris-target #$SO_SNDBUF
     3357                                      #-solaris-target #$SO_SNDLOWAT))
     3358                     ((:character-special :tty)
     3359                      (#_fpathconf fd #$_PC_MAX_INPUT))
     3360                     (t nominal))))
     3361      (when (<= octets 0) (setq octets nominal))
     3362      (scale-buffer-size octets))))
    33633363
    33643364(defun milliseconds-until-deadline (deadline ioblock)
Note: See TracChangeset for help on using the changeset viewer.